阅读 99

Docker进程执行与RunC交互源码深入剖析-Docker商业环境实战

专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。更多内容请关注《数据云技术社区》公众号。

因Docker版本问题,内容正在重构,谢谢

1 Docker进程执行架构

  • runC不仅可以被docker engine使用,它也可以单独使用(它本身就是命令行工具)

2 Docker进程关系

  • dockerd, containerd, ctr,shim, runc,等这几个进程的关系如何呢?
  • dockerd是docker engine守护进程,dockerd启动时会启动containerd子进程。
  • dockerd与containerd通过rpc进行通信
  • ctr是containerd的cli
  • containerd通过shim操作runc,runc真正控制容器生命周期
  • shim直接调用runc的包函数,shim与containerd之前通过rpc通信
  • 真正用户想启动的进程由runc的init进程启动,即runc init [args ...]

2.1 进程关系模型

docker     ctr
  |         |
  V         V
dockerd -> containerd ---> shim -> runc -> runc init -> process
                      |-- > shim -> runc -> runc init -> process
                      +-- > shim -> runc -> runc init -> process
复制代码

3 源码流程分析

5 总结

执笔小记,总结于此!

专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。更多内容请关注《数据云技术社区》公众号。