本篇是专栏第四部分“架构篇”的第四篇,前面三篇内容,我为你介绍了 Docker 的核心组件及其相关功能。本篇,我们从容器创建的角度来看看 Docker 内部这些组件之间协作的原理。
经过前面内容的学习,想必你已经对 Docker 的核心组件有了一些认识。本篇我们从容器创建的角度,来看看 Docker 的这些组件是如何协作的。本篇使用 Docker CE v19.03.5 的源码进行介绍。
CLI 创建容器
在本课程的第一部分,我们已经知道了创建容器有两种方式:
- 使用
docker create
创建Created
状态的容器,之后再通过docker start
来运行容器; - 使用
docker run
创建并运行容器。
我们从 Docker CLI 入手,分别看看这两个命令之间的差别。
docker create
它的入口函数是 runCreate,处理逻辑分以下几步:
- 解析 CLI 的配置文件,默认是 $HOME/.docker/config.json,看其中是否有配置 proxy 相关的参数,如果有则记录下来,如果没有则跳过进入后续流程;
- 解析通过
dock