一、概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker有两个程序:Docker服务端和Docker客户端。Docker服务端是一个服务进程,管理着所有容器(container);Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。
Docker包括三个概念:镜像(image)、容器(container)、仓库(repository)。理解了这三个概念,就理解了Docker的整个生命周期。
(1)镜像
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
Docker 镜像就是一个只读的模板。
(2)容器
容器是从镜像创建的运行实例,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
Docker 利用容器来运行应用。
(3)仓库
仓库是集中存放镜像文件的场所,分为公开仓库和私有仓库两种形式。
其中,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供大陆用户更稳定快速的访问。
当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull下来就可以了。
二、目标
Docker的主要目标是“Build, Ship and Run Any App, Anywhere”,即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
三、Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问, 客户端和守护进程也可以运行再同一主机上,但这不是必须的。
守护进程从客户端接受命令并管理运行在主机上的容器。