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

專一於大數據及容器雲核心技術解密,可提供全棧的大數據+雲原平生臺諮詢方案,請持續關注本套博客。若有任何學術交流,可隨時聯繫。更多內容請關注《數據雲技術社區》公衆號。 架構

相關文章
相關標籤/搜索