Bootstrap

Docker内部组件

Docker是一个实现了轻量级虚拟化的平台,这个平台主要由以下的几部分组成:

  • 客户端(Docker Client)

  • 守护进程(Docker daemon)

  • 镜像(Docker Image)

  • 容器(Docker Container)

  • 镜像仓库(Docker Registry)

Docker内部组件之间的相互关系如图3所示。Docker守护进程是整个Docker组成部分的核心,也称作服务端。Docker守护进程可以部署在本地,也可以部署在远程。而Docker客户端则通过RESTFul形式的API与Docker守护进程通信。镜像仓库可以为Docker客户端提供能够实现各种功能的只读镜像,通过这些镜像可以创建出一个或多个容器。每个容器都是运行在Docker客户端中的一个独立进程。

1 客户端

Docker客户端与守护进程的交互情况如图4所示。Docker客户端是通过命令行或者其他的工具来使用API。当Docker客户端向Docker服务器发送Docker命令时,由Docker daemon进程负责处理Docker客户端以RESTFul形式调用的API命令。当然我们可以在宿主机上同时运行Docker客户端和守护进程,也可以通过本地Docker客户端连接到远程宿主机上的Docker守护进程。

2 守护进程

Docker守护进程是创建和运行容器的Linux进程,守护进程可以绑定本地的端口并提供API服务,同时也支持远程访问及控制。当Docker守护进程接收到指令后,将由daemon进程执行镜像的编译、容器的启动/停止以及分发。

3 镜像

Docker镜像是用来创建Docker容器的模板,用户是基于镜像来运行自己的容器。通常镜像的体积都很小,便于分享、存储和更新。

4 容器

容器是独立运行的一个或一组应用。容器是基于镜像启动并运行的,在容器中可以运行一个或多个进程。当容器启动完成后,用户就可以使用容器提供的服务或在容器中完成特定的软件安装。镜像可以看作是Docker生命周期中的构建或者是打包阶段,而容器则被认为是在启动或者是执行阶段。

5 镜像仓库

Docker镜像仓库是用来保存镜像的,同源码版本控制中的代码与代码仓库的关系。Docker的镜像仓库可以分为公有和私有仓库。由Docker公司运营的公有镜像仓库是Docker Hub(https://hub.docker.com/)。用户可以建立自己的账号,分享或保存自己的镜像。