从零开始入门 K8s:深入剖析 Linux 容器(15)

containerd 容器架构详解 - 容器流程示例
接下来我们以两个示例来详细解释一下容器的流程是怎么工作的 , 下面的两张图是基于 containerd 的架构画的一个容器的工作流程 。

start 流程
先看一下容器 start 的流程:

这张图由三个部分组成:

第一个部分是容器引擎部分 , 容器引擎可以是 docker , 也可以是其它的;

两个虚线框框起来的 containerd 和 containerd-shim , 它们两个是属于 containerd 架构的部分;

最下面就是 container 的部分 , 这个部分是通过一个 runtime 去拉起的 , 可以认为是 shim 去操作 runC 命令创建的一个容器 。

先看一下这个流程是怎么工作的 , 图里面也标明了 1、2、3、4 。 这个 1、2、3、4 就是 containerd 怎么去创建一个容器的流程 。

首先它会去创建一个 matadata , 然后会去发请求给 task service 说要去创建容器 。 通过中间一系列的组件 , 最终把请求下发到一个 shim 。 containerd 和 shim 的交互其实也是通过 GRPC 来做交互的 , containerd 把创建请求发给 shim 之后 , shim 会去调用 runtime 创建一个容器出来 , 以上就是容器 start 的一个示例 。

推荐阅读