目前公司的项目部署模式提倡容器化,docker这个字眼常常出现,这篇记录一下对docker的一个认识,学习一个新技术最重要的是先了解是什么?
这里贴出docker官方文档简介
以下的内容也是按照文档介绍。
一、docker是什么?
docker是一个集应用程序开发,发布,运行的开源平台,docker可以允许你将你的物理机器和应用程序分割开来以致于你可以快速的发布你的软件,使用docker,你可以像管理你的物理机一样管理你的应用程序,利用docker快速交付,测试和部署代码,能大大较少编写代码和部署到生产环境之间的延迟。
二、docker平台。
docker提供了在一个隔离和松散环境下(这个环境被称为容器)打包,运行应用程序的能力。容器的隔离性和安全性允许你在一台物理机上运行多个容器,容器是轻量级的因为它们不需要管理程序的额外的加载,直接在主机的内核中运行,这意味与传统的虚拟机相比,你可以运行更多的容器在硬件组合上,甚至你可以在本身已为虚拟机的机器上运行docker容器。
- docker还提供了工具和平台来管理容器的生命周期;
1、你可以使用docker开发你的应用和应用支持的主件;
2、容器变成了一个支持发布和测试的独立单元;
3、准备就绪以后,可以作为一个容器或一个协调服务部署到开发环境中,程序工作是如此相同不管程序运行在本地数据中心还是一个云服务器上;
三、docker Engine
docker引擎是一个cs应用,就是我们常见的客户端服务器模式,有三个重要的组件;
- 一个长期运行的守护进程,我们可以理解为docker服务器;
- 一个rest api提供与服务器交互和发布指令的特殊的接口;
-
命令行界面的客户端;
docker服务架构
docker客户端使用docker的Rest api和docker守护进程进行通信和交互,docker守护进程管理譬如镜像,容器,网络或数据卷等docker对象。
四、what can we use for docker?
- 快速持续性的交付你的应用程序。
docker官方介绍了几个例子来说明我们使用docker的好处;
1、我们可以在本地编写代码并且可以使用容器技术分享我们的应用和我们的同事;
(当一些中间件程序或者公用程序写完以后,可以打成镜像协同使用,在本地调试也很方便)
2、使用docker将应用推送到测试环境进行自动或手动的测试工作;
3、当发现bug的时候,开发人员可以修改代码在开发环境,并使用容器技术打包发布到测试环境测试和检验;
4、当测试完成以后,将修补程序推送到生产环境和将镜像推送到生产环境一样简单;
五、docker的架构。
docker的架构图- 几个概念的介绍:
1、docker daemon
docker守护进程监听着来自于docker api的所有请求,并管理着docker对象,一个docker守护
进程还可以和其他的守护进程进行通信。
2、docker client
docker客户端是docker使用者主要的和docker守护进程交互的方式,我们可以使用docker命令
利用客户端发送给服务端进行通讯,docker客户端还可以和多个守护进程通信。
3、docker registries(docker仓库)
docker仓库存储这docker镜像,Docker Hub是一个公用的仓库任何人都可以使用(这里我们可
以理解为maven的中央仓库和私服的关系,docker的默认配置是去中央仓库搜索镜像,如上面
所说,你也可以搭建你自己私有的docker仓库。
4、docker object
- images(镜像)
docker镜像是一个包含创建docker容器指令的一个只读的模版,一个镜像基于其他的镜像
附加一些额外的定制化,举个例子,你可能创建一个镜像基于ubuntu,并且还想安装一个
apache的web服务,并且一些配置文件来运行你的项目。
在其他情况下我们可能需要一些定制话很强的镜像来运行我们自己的业务项目,我们可以使用
Dockerfile(下一篇介绍),我们可以理解为一个脚本文件,docker会按照我们事先规定的步
骤打造我们自己的镜像,镜像会以层级(layer)来打造,可以理解为拼积木,只有需要变化的层
会改变。
docker container
简单暴力的说法就是把docker镜像运行起来就是docker容器。我们可以初始化,运行,停止
或者删除一个容器利用docker提供的api,我们也可以让容器关联网络,连接存储,中间件等
甚至在这个基础上在创建一个镜像,所以我觉得理解为堆积木很恰当。
默认情况下容器和容器之间和物理机器之间的隔离度是很高的,但是我们也可以调整。
容器的一些配置是根据在创建镜像和启动时的一些参数配置的,在删除时其实也就无状态了。
这给我们一个很方便和耦合度很低的开发测试环境。
五、总结
这一篇文章介绍了docker是什么,一次记录一下加深自己的理解。
网友评论