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


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

一、containerd

關於containerd的一些詳解介紹,請參考containerd的官網

二、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是一個CLI工具,用於根據OCI規范生成和運行容器。

他們之間的關系如下圖:

OCI

Open Container Initiative(開放容器計划)是一個開放治理結構,其明確目的是圍繞容器格式和運行時創建開放行業標准。

OCI由Docker和其他容器行業的領導者於2015年6月建立,目前包含兩個規范:運行時規范(runtime-spec)和映像規范(image-spec)。 運行時規范概述了如何運行在磁盤上解壓縮的“文件系統包”。 在較高級別上,OCI實現將下載OCI映像,然后將該映像解壓縮為OCI運行時文件系統捆綁包。 此時,OCI運行時捆綁包將由OCI運行時運行。


免責聲明!

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



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