当前位置 博文首页 > k8s 生态:Docker 内部组件协作原理

    k8s 生态:Docker 内部组件协作原理

    作者:[db:作者] 时间:2021-08-01 11:49

    本篇是专栏第四部分“架构篇”的第四篇,前面三篇内容,我为你介绍了 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 相关的参数,如果有则记录下来,如果没有则跳过进入后续流程;
    • 解析通过 docker create 传递进来的参数,生成创建容器的基本配置;
    • 验证配置中是否包含当前 API 版本中不支持的参数;
    • 最后调用 createContainer 函数,并返回结果。
    // cli/command/container/create.go#L64
    f
    cs
    下一篇:没有了