容器運(yùn)行時(shí)相關(guān)概念
隨著容器編排技術(shù)的發(fā)展,mesos ,swarm ,k8s 三個(gè)容器編排工具。因?yàn)閐ocker 當(dāng)時(shí)做 Swarm,想要進(jìn)軍 PaaS 市場(chǎng),做了這個(gè)架構(gòu)切分,讓 Docker Daemon 專門(mén)去負(fù)責(zé)上層的封裝編排,而 Docker 將容器操作都遷移到 containerd 中。
從 Docker 1.11 版本開(kāi)始,docker發(fā)布為圖中的架構(gòu),Docker 容器運(yùn)行就不是簡(jiǎn)單通過(guò) Docker Daemon 來(lái)啟動(dòng)了,而是通過(guò)集成 containerd、runc 等多個(gè)組件來(lái)完成的。雖然 Docker Daemon 守護(hù)進(jìn)程模塊在不停的更新版本,一直都是 CS 架構(gòu),守護(hù)進(jìn)程負(fù)責(zé)和 Docker Client 端交互,接收客戶端請(qǐng)求,并管理 Docker 鏡像和容器。
當(dāng)然后面的結(jié)果我們知道 Swarm 在 Kubernetes 面前是慘敗,然后 Docker 公司就把 containerd 項(xiàng)目捐獻(xiàn)給了 CNCF 基金會(huì)。后面docker 把 libcontainer 的實(shí)現(xiàn)也捐贈(zèng)出來(lái),改名叫 runc。?
Docker Daemon 守護(hù)進(jìn)程模塊? 通過(guò) containerd 負(fù)責(zé)集群節(jié)點(diǎn)上容器的生命周期管理,同時(shí) containerd 向上為 Docker Daemon 提供 gRPC 接口。
當(dāng)我們要?jiǎng)?chuàng)建一個(gè)容器的時(shí)候,現(xiàn)在 Docker Daemon 不再直接處理,而是請(qǐng)求 containerd 來(lái)創(chuàng)建一個(gè)容器,containerd 收到請(qǐng)求后,也并不會(huì)直接去操作容器,而是創(chuàng)建一個(gè)叫做 containerd-shim 的進(jìn)程,讓這個(gè)進(jìn)程去操作容器。













參考資料:
https://www.51cto.com/article/677744.html
https://karampok.me/posts/container-networking-with-cni/
https://www.51cto.com/article/687502.html
https://www.huweihuang.com/kubernetes-notes/runtime/runtime.html
查看網(wǎng)上的資料,加上自己的理解和分析,如果本講解視頻與你的理解有出入,歡迎在評(píng)論區(qū)交流