docker,containerd,runc,docker-shim之间的关系
關于containerd
關于containerd的一些詳解介紹,請參考containerd的官網:(https://containerd.io/)
關于docker
docker本身而言包括了,docker client和dockerd(docker daemon),dockerd本身實屬是對容器相關操作的api的最上層封裝,
直接面向操作用戶。
關于docker1.12.x
該版本的docker由 docker-client ,dockerd,containerd,docker-shim,runc組成,現在來談談每個組件是用來干嘛的:
dockerd
dockerd本身實屬是對容器相關操作的api的最上層封裝,直接面向操作用戶。
containerd
dockerd實際真實調用的還是containerd的api接口(rpc方式實現),containerd是dockerd和runc之間的一個中間交流組件。
docker-shim
docker-shim是一個真實運行的容器的真實墊片載體,每啟動一個容器都會起一個新的docker-shim的一個進程,
他直接通過指定的三個參數:容器id,boundle目錄(containerd的對應某個容器生成的目錄,一般位于:/var/run/docker/libcontainerd/containerID),
運行是二進制(默認為runc)來調用runc的api創建一個容器(比如創建容器:最后拼裝的命令如下:runc create 。。。。。)
runc
runc是一個命令行工具端,他根據oci(開放容器組織)的標準來創建和運行容器。
他們之間的關系如下圖:
總結
以上是生活随笔為你收集整理的docker,containerd,runc,docker-shim之间的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scala模拟Spark分布式计算流程示
- 下一篇: Scala Array中_ filter