Docker以過時,看Containerd怎樣一統天下


Docker作為非常流行的容器技術,之前經常有文章說它被K8S棄用了,取而代之的是另一種容器技術containerd!其實containerd只是從Docker中分離出來的底層容器運行時,使用起來和Docker並沒有啥區別,本文主要介紹下containerd的使用,希望對大家有所幫助!
containerd是一個工業級標准的容器運行時,它強調簡單性、健壯性和可移植性。containerd可以在宿主機中管理完整的容器生命周期,包括容器鏡像的傳輸和存儲、容器的執行和管理、存儲和網絡等。
在這里插入圖片描述

1、k8s的容器運行時架構

容器運行時(ContainerRuntime),運行於 kubernetes(k8s)集群的每個節點中,負責容器的整個生命周期。其中dockershim是目前應用最廣的容器運行時,隨着容器雲的發展,越來越多的容器運行時涌現。為了解決這些容器運行時和 k8s 的集成問題,在 k8s1.5 版本中,社區推出了 CRI(ContainerRuntimeInterface,容器運行時接口),以支持更多的容器運行時。
在這里插入圖片描述

2、CRI與OCI運行機制

CRI是kubernetes 定義的一組 gRPC 服務。Kubelet作為客戶端,基於gRPC 框架,通過 Socket 和容器運行時通信。

它包括兩類服務:鏡像服務(ImageService)和運行時服務(Runtime Service)。鏡像服務提供下載、檢查和刪除鏡像的遠程程序調用。運行時服務包含用於管理容器生命周期,以及與容器交互的遠程調用。

OCI(OpenContainerInitiative,開放容器計划)定義了創建容器的格式和運行時的開源行業標准,包括鏡像規范(ImageSpecification)和運行時規范(RuntimeSpecification)。

鏡像規范定義了OCI鏡像的標准。高層級運行時將會下載一個 OCI 鏡像,並把它解壓成 OCI 運行時文件系統包。

運行時規范則描述了如何從 OCI運行時文件系統包運行容器程序,並且定義它的配置、運行環境和生命周期。如何為新容器設置命名空間(namepsaces)和控制組(cgroups),以及掛載根文件系統等等操作。

3、k8s棄用docker的原因

2020年底,Kubernetes官方發布公告,宣布自v1.20起放棄對Docker的支持,屆時用戶將收到 Docker 棄用警告,並需要改用其他容器運行時。但 Docker 作為容器鏡像構建工具的作用將不受影響,用其構建的容器鏡像將一如既往地在集群中與所有容器運行時正常運轉。

這里面說到了容器運行時,其實k8s要棄用的是dockershim這個容器運行時,而非docker, dockershim是Kubernetes的一個組件,主要目的是為了通過CRI操作Docker,具體邏輯情況下圖:
在這里插入圖片描述
4、dockershim、Containerd與CRI-O對比
在這里插入圖片描述
我為大家准備了一份Kubernetes + Containerd的部署文檔,請關注公眾號山河編程,回復:docker 領取下載密碼。

鏈接下載猛戳:https://pan.baidu.com/s/1Aj8iRQTkCetjAVnXsul3DA


免責聲明!

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



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