Docker是什么?Docker现在被称为Moby,2017年4月在DockerCon上,官方做了这样一个动作,后面就被商业化了,这里说到的Docker是Docker CE或者叫Moby。
Docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
这里简单说一下Docker几个简单术语:
Docker镜像。Docker镜像非常像管理源代码用的GitHub,了解GitHub的同学都知道GitHub上可以用来做版本控制,对我们代码可以做提交、开分支,可以做commit, 各种各样的操作,非常简单、非常快速。
镜像仓库。Docker的镜像仓库类似于GitHub这样一个的产品形态,可以帮助我们管理镜像,那么Docker镜像是把我们所有程序包和我们的应用以及程序包依赖的依赖包全部打包成一个镜像的形式、一个Image用来管理,我们可以理解为,它也是一个代码,它是一个可执行的、二进制的代码。
Container实例。Container实例就是把一个Docker镜像给跑起来,在运行过程中,我们称它为一个容器实例。
数据卷Volume。我们可以把它理解为一个目录,或者磁盘上的一个空间。
因为Docker本来用了沙箱机制,所以它在运行时所需要用到的这些磁盘、本地文件或者产生的一些数据,如果在不做任何配置的情况下,它是在这个沙箱里面的。
而通过数据卷的形式,我们可以把数据加载出来,加载到宿主机上,把宿主机上某个特定的目录,或者是某个网络上特定的目录,加载到容器里。在容器里面这个数据卷就可以当作一个硬盘一样,快速使用。
Docker网络。Docker网络是用来把实例和宿主机之间做一个相互的隔离或者做一个桥接。同时在Docker网络里面,比如我们在容器内部,开一个TomCat服务是8080端口,但我们宿主机上面同时运行的有三个实例,大家知道3个8080端口不可能同时在一台宿主机上开始,如果要去改容器镜像,那有点复杂。
通过Docker网络,我们就可以把这个端口直接映射出来,比如把3个容器的8080端口分别映射到宿主机上,分别为8080、8081、8082,它能够做到快速的网络映射转换的过程。
Dockerfile。Dockerfile是用来描述Docker镜像的整个构建过程,可以理解为Docker的一个代码,通过这个代码,可以构建出一个二进制的镜像。
介绍应用容器引擎的同时这里也简单的介绍一下容器服务 container service
容器服务(Container Service)提供高性能可伸缩的容器应用管理服务,支持用 Docker 容器进行应用生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了云虚拟化、存储、网络和安全能力,打造 Docker 云端最佳运行环境。