本篇是课程第四部分“架构篇”的第一个主题“Docker 核心架构及拆解”的下篇。在前两篇中,我分别为你介绍了 docker、containerd、runc 相关的组件,以及 docker-proxy 和 docker-init。本篇,我们来将 Docker 的这些组件组织起来,看看这些组件是如何构建 Docker 核心架构的。
docker 与 containerd
为了更好地理解 Docker 各个组件是如何构建 Docker 核心架构的,本篇我们以一个全新的 Docker 来进行介绍。为了避免我本地环境的差异造成的影响,我们通过以下方式启动一个 Docker In Docker 的 Docker Daemon。
(MoeLove) ➜ ~ docker run --name dind --rm -d --privileged docker:dind
293a1a9b565657f713a4dd92306131ef8b209163658f766e61b8db2f5f79e1f2
(MoeLove) ➜ ~ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
293a1a9b5656 docker:dind "dockerd-entrypoint.…" 6 seconds ago Up 5 seconds 2375-2376/tcp dind
上面这种启动 Docker In Docker 容器的方式,在之前“将 Docker 用于 CI/CD pipeline”相关的内容中有做过介绍,这里再次提一下,重点是需要给它加 --privileg