談談docker,containerd,runc,docker-shim之間的關系


談談docker,containerd,runc,docker-shim之間的關系

談談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(開放容器組織)的標准來創建和運行容器。

他們之間的關系如下圖:

這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM