Containerd和Docker的關系


聯系

容器運行時(Container Runtime)是Kubernetes(k8s)最重要的組件之一,負責管理鏡像和容器的生命周期。Kubelet通過Container Runtime Interface (CRI) 與容器運行時交互,以管理鏡像和容器。

Containerd調用鏈更短,組件更少,更穩定,占用節點資源更少。 建議選擇containerd。
當您遇到以下情況時,請選擇docker作為運行時組件:

  • 如需使用docker in docker。
  • 如需在CCE節點使用docker build/push/save/load等命令。
  • 如需調用docker API。
  • 如需docker compose或docker swarm。

Containerd創建並啟動的容器會被kubelet立即刪除,不支持暫停、恢復、重啟、重命名、等待容器,Containerd不具備docker構建、導入、導出、比較、推送、查找、打標簽鏡像的能力,Containerd不支持拷貝文件,可通過修改containerd的配置文件實現登錄鏡像倉庫。

Containerd和Docker組件常用命令

Containerd不支持dockerAPI和dockerCLI,但是可以通過cri-tool命令實現類似的功能。

鏡像相關功能

容器相關功能

POD相關功能

調用鏈區別

Docker作為k8s容器運行時,調用關系如下:

kubelet --> docker shim (在 kubelet 進程中) --> dockerd --> containerd

Containerd作為k8s容器運行時,調用關系如下:

kubelet --> cri plugin(在 containerd 進程中) --> containerd

其中dockerd雖增加了swarm cluster、docker build、docker API等功能,但也會引入一些bug,而與containerd相比,多了一層調用。


免責聲明!

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



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