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