成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶你弄懂Containerd vs Docker

運維 系統運維
containerd與docker還是有很多不同之處,但最終要實現的效果都一致。至于我們在使用k8s過程中,具體使用哪一種作為運行時,還是根據實際情況選擇。

[[435278]]

引言

最近公司打算在新的產品中不再使用docker,而是使用containerd作為運行時。至于原因嘛,沒有直接告訴我們。于是,我就打算自己去了解一番;并與docker做個對比,看看兩者的差異。

介紹

docker相信大家已經非常熟悉了,我就不介紹了。這里來介紹一下containerd。github上針對containerd的介紹如下:

  1. containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability.  
  2. It is available as a daemon for Linux and Windows,  
  3. which can manage the complete container lifecycle of its host system: image transfer and storage,  
  4. container execution and supervision, low-level storage and network attachments, etc. 

大致意思就是說Containerd是一個強調簡單性、健壯性和可移植性的行業標準容器運行時。可以在windows和linux上使用,能夠管理宿主機上容器整個生命周期,包括鏡像傳輸、容器創建和管理,低級別的存儲和網絡附件等等。其架構如下:

功能

使用過docker的朋友肯定對docker很熟悉了。這里就只說一下containerd的功能。containerd的功能如下:

  • 支持 OCI 的鏡像標準
  • OCI 的容器運行時
  • 鏡像的推送和拉取
  • 容器運行時生命周期管理
  • 多租戶的鏡像存儲
  • 網絡管理以及網絡 namespace 管理,支持容器網絡加入已有的 namespace

對比

接下來,對docker和containerd進行一個多方面的比較。看看兩者究竟有哪些缺別,也幫助大家以后進行選擇合適的去用。

調用鏈

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

不難看出,使用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

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

流服務

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

  1. [plugins."io.containerd.grpc.v1.cri"
  2.     stream_idle_timeout = "4h0m0s" 
  3.     stream_server_address = "127.0.0.1" 
  4.     stream_server_port = "0" 
  5.     enable_tls_streaming = false 

命令

使用containerd作為運行時后,常用的命令也變了。下面舉兩個例子。另外,使用containerd時,可以安裝nerdctl工具配合containerd的namespace來一起使用,這樣就跟使用docker命令一樣了

命名空間

containerd引入了namespace。名稱空間允許多個使用者使用同一容器,彼此之間不會發生沖突。它的優點是可以共享內容,但仍然與容器和鏡像分離。所以,在使用containerd相關命令時,需要添加-n namespace參數。

  1. Namespaces allow multiple consumers to use the same containerd without conflicting with each other.  
  2. It has the benefit of sharing content but still having separation with containers and images. 

總結

總體來看,containerd與docker還是有很多不同之處,但最終要實現的效果都一致。至于我們在使用k8s過程中,具體使用哪一種作為運行時,還是根據實際情況選擇。

參考

https://github.com/containerd/containerd

本文轉載自微信公眾號「運維開發故事」

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2023-02-28 23:04:15

2022-05-30 18:18:23

NoSQL數據庫

2022-02-23 09:36:11

GoRuby編程語言

2022-02-17 08:35:59

OLTPOLAP數據倉庫

2024-12-26 16:49:20

Python字典元素

2021-06-30 10:01:09

Python字典代碼

2022-03-11 08:32:53

C代碼代碼編輯vscode

2021-06-16 10:03:37

Python案例分析Python基礎

2022-02-18 08:54:21

docker操作系統Linux

2022-02-22 08:15:59

微服務架構單體架構

2021-07-03 10:02:30

Python字符串瀏覽器

2021-01-07 11:10:47

關鍵字

2023-04-20 08:00:00

ES搜索引擎MySQL

2021-05-20 06:57:16

RabbitMQ開源消息

2021-10-15 07:57:04

Docker 日志容器

2024-05-10 13:46:36

Python進制

2021-06-05 10:02:15

Python進制數據類型

2021-06-09 09:00:11

Python數據類型基礎

2024-11-27 16:38:07

2018-10-22 12:50:20

CDN網絡內容發布網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日本久久 | av色站 | 国产aaaaav久久久一区二区 | 亚洲高清在线免费观看 | 狠狠干影院 | 日韩网| 午夜av在线 | 成人在线免费网站 | 日韩欧美精品一区 | 久久久久久久久精 | 欧美一区二区三区国产精品 | av手机在线播放 | 丝袜美腿一区二区三区动态图 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美日韩在线一区二区 | 日韩视频在线一区 | 亚洲一区中文字幕 | 黄色在线免费观看视频网站 | 人妖av | 男女网站在线观看 | 久久久999国产精品 中文字幕在线精品 | 国产精品一区二 | 日韩91在线 | 精品视频网 | 中文字幕av第一页 | 久久精品成人 | 亚洲视频在线观看免费 | 精品国产一级 | 亚洲 中文 欧美 日韩 在线观看 | 亚洲国产日韩一区 | 欧美阿v | 成人av影院 | 欧美日韩中文字幕在线 | 黄色在线免费观看视频网站 | 国产精品久久久久久久久久久免费看 | 粉嫩一区二区三区性色av | 91av视频| 亚洲精品日日夜夜 | 永久精品 | 伊人网站 | 嫩呦国产一区二区三区av |