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

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

执笔小记,总结于此!bash

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

相关文章
相关标签/搜索