首頁  >  文章  >  運維  >  containerd與docker的差別是什麼

containerd與docker的差別是什麼

WBOY
WBOY原創
2021-12-29 09:53:1717904瀏覽

區別:1、containerd不需要經過dockershim,所以調用鏈更短,docker需要經過所以調用鏈更長;2、docker調用cni是“docker-shim”,containerd調用cni是“containerd- cri」。

containerd與docker的差別是什麼

本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

containerd與docker的差異是什麼

#在使用k8s時,使用docker和containerd的呼叫鏈如下所示:

containerd與docker的差別是什麼

不難看出,使用containerd時,呼叫鏈更短,不再需要經過dockershim和docker

資料目錄

##相信大家都知道docker的資料目錄預設是在/var/lib/docker目錄下;而切換到containerd時,資料目錄預設為/var/lib/containerd

##日誌

當我們在使用k8s時,如果使用了docker作為運行時,其實容器程式日誌的落盤是由docker來負責的。 /var/log/pod和/var/log/container下的日誌檔案會軟連接到/var/lib/docker下對應的日誌文件,如果還需要對日誌做一些參數配置,直接修改docker設定檔即可;而如果我們現在使用containerd作為運行時,則容器日誌的落盤將由kubelet來負責,/var/log/container下的日誌文件會軟連接到/var/log/pod下的日誌文件,如果需要調整日誌參數,則需要修改kubelet相關配置

CNI

當使用docker作為運行時時,kubelet中的docker-shim負責呼叫cni;而當使用containerd作為執行時間時,containerd中內建的containerd-cri負責呼叫cni

[plugins."io.containerd.grpc.v1.cri".cni]       
bin_dir = "/opt/cni/bin"       
conf_dir = "/etc/cni/net.d"

串流服務

熟悉k8s的朋友都知道,kubectl exec 和kubelet log等指令需要通過apiserver與容器通信,這其中就牽涉到了流服務。而docker API本身支持,kubelet中的docker-shim透過docker API流轉送;但containerd卻要對此進行單獨配置

[plugins."io.containerd.grpc.v1.cri"]     
stream_idle_timeout = "4h0m0s"    
 stream_server_address = "127.0.0.1"    
 stream_server_port = "0"     
enable_tls_streaming = false

推薦學習:《

docker視訊教學

以上是containerd與docker的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn