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

exec 流程
接下来看下面这张图是怎么去 exec 一个容器的 。

和 start 流程非常相似 , 结构也大概相同 , 不同的部分其实就是 containerd 怎么去处理这部分流程 。 和上面的图一样 , 我也在图中标明了 1、2、3、4 , 这些步骤就代表了 containerd 去做 exec 的一个先后顺序 。

由上图可以看到:exec 的操作还是发给 containerd-shim 的 。 对容器来说 , 去 start 一个容器和去 exec 一个容器 , 其实并没有本质的区别 。

最终的一个区别无非就是:是否对容器中跑的进程做一个 namespace 的创建 。

exec 的时候 , 需要把这个进程加入到一个已有的 namespace 里面;

start 的时候 , 容器进程的 namespace 是需要去专门创建 。

本文总结


最后希望各位同学看完本文后 , 能够对 Linux 容器有更深刻的了解 。 这里为大家简单总结一下本文的内容:

推荐阅读