Docker 是一个容器平台,其用于构建, 保护和管理从开发到生产在内部和云端的应用程序。总体来说,Docker 平台有很多组件,除了 Docker Desktop 外,还包括 Docker 镜像,Docker 容器,Docker 守护进程,Docker 客户端,Docker 注册表和 Docker Hub。他们的之前互相联系,形成如今的 Docker 平台:Docker 镜像定义了容器的内容。Docker 容器是可运行的镜像实例。Docker 守护进程是一个后台应用程序,用于管理和运行 Docker 镜像和容器。Docker 客户端是一个命令行实用程序,它调用 Docker 守护进程的 API。Docker 注册表包含镜像,Docker Hub 是一个广泛使用的公共注册表。大部分 Docker(但不是桌面)在 Apache v2 许可下是开源的。

而从其架构和运行流程来看,Docker是一个 C/S 模式的架构,后端是一个松耦合架构,众多模块各司其职。

docker的部署架构图 docker 架构_守护进程

Docker运行的基本流程为:

a. 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

b. Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受 Docker Client 的请求。

c. Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。

d. Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graphdriver将下载镜像以Graph的形式存储。

e. 当需要为Docker创建网络环境时,通过网络管理驱动Networkdriver,创建并配置Docker容器网络环境。

f. 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Execdriver来完成。

g. Libcontainer是一项独立的容器管理包,Networkdriver以及Execdriver都是通过Libcontainer来实现具体对容器进行的操作。

可见,Docker 平台是一个工程复杂度很高的应用。