精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker、Containerd和Kubernetes之間的關(guān)系

阿銘linux ? 來源:阿銘linux ? 2023-04-08 10:44 ? 次閱讀

1)Kubernetes與Docker

Docker是最早出現(xiàn)的那批容器引擎工具,所以它最早占領(lǐng)了市場。Kubernetes主要用來做容器編排,用來管理容器集群,是一個平臺。

Kubernetes要想去控制容器,就得借助容器引擎,在早期的Kubernetes版本里,除了選擇Docker作為容器引擎外,沒更好的選擇。所以早期的Kubernetes和Docker深深地綁定了在一起。由于Docker可以在沒有Kubernetes的情況下使用,而Kubernetes必須要有容器運行時(Docker引擎)才能進行編排。

這對于Kubernetes來說,絕對是一個非常大的隱患,這相當于是將自己命根子交給了別人,如果哪天Docker翻臉了,Kubernetes必然損失巨大。

好在,Kubernetes發(fā)展比Docker更加迅猛,勢頭遠遠蓋過了Docker,Kubernetes終于有資格自己決定做一些事情了。

2)CRI

為了解決隱患,Kubernetes在1.5版本里,引入了一個新的接口標準:CRI(Container Runtime Interface),它主要用來規(guī)定如何調(diào)用容器運行時來管理容器和鏡像,但這個接口標準和之前的Docker調(diào)用標準有不少差異,所以兩者完全不兼容。這意味著,Kubernetes可以撇開Docker,使用其它容器運行時(如rkt)。

由于Docker用戶非常龐大,Kubernetes也意識到了直接不兼容Docker會有許多不確定風險,當時,Kubernetes用了一個臨時方案,在Kubernetes和Docker中間開發(fā)了一個Dockershim,主要用來將Docker的接口標準轉(zhuǎn)換成CRI標準。

3)Containerd

Docker意識到Kubernetes的改變,為了迎合Kubernetes,將Docker Engine拆分成多個模塊,其中Docker Daemon部分也就是說Containerd捐獻給了CNCF。

所以,Containerd實際上是Docker引擎拆出來的一個模塊。

Containerd 作為 CNCF 的托管項目,自然是要符合 CRI 標準的。但當時的Docker 出于自己諸多原因的考慮,它只是在 Docker Engine 里調(diào)用了 containerd,外部的接口仍然保持不變,也就是說還不與 CRI 兼容。

在當時的Kubernetes版本里,有兩種方法調(diào)用容器:

第一種是用 CRI 調(diào)用 dockershim,然后 dockershim 調(diào)用 Docker,Docker 再走 containerd 去操作容器。

第二種是用 CRI 直接調(diào)用 containerd 去操作容器。

6de4b732-d5a9-11ed-bfe3-dac502259ad0.png

很明顯,第一種方法多了兩層調(diào)用,性能明顯不如第二種方法。所以Kubernetes決定將dockershim移除,所以也就不能直接使用Docker了,在外界看來就像是Kubernetes棄用了Docker。

4)棄用dockershim

2020年Kubernetes發(fā)布1.20版本時,對外聲明將在后續(xù)版本里(實際上是在22年的1.24版本里)移除dockershim,也就是取消對Docker的支持。當時,眾多吃瓜群眾理解錯了意思,認為成了Kubernetes棄用Docker。它實際上只是“棄用了 dockershim”這個小組件,也就是說把 dockershim 移出了 kubelet,并不是“棄用了 Docker”這個軟件產(chǎn)品

這個舉措對Kubernetes和 Docker 來說都不會有什么太大的影響,因為他們兩個都早已經(jīng)把下層都改成了開源的 containerd,原來的 Docker 鏡像和容器仍然會正常運行,唯一的變化就是 Kubernetes繞過了 Docker,直接調(diào)用 Docker 內(nèi)部的 containerd 而已。

5)Kubernetes移除dockershim后對Docker的影響

雖然現(xiàn)在 Kubernetes 不再默認綁定 Docker,但 Docker 還是能夠以其他的形式與 Kubernetes 共存的。

首先,因為容器鏡像格式已經(jīng)被標準化了(OCI 規(guī)范,Open Container Initiative),Docker 鏡像仍然可以在 Kubernetes 里正常使用,原來的開發(fā)測試、CI/CD 流程都不需要改動,我們?nèi)匀豢梢岳?Docker Hub 上的鏡像,或者編寫 Dockerfile 來打包應(yīng)用。

其次,Docker 是一個完整的軟件產(chǎn)品線,不止是 containerd,它還包括了鏡像構(gòu)建、分發(fā)、測試等許多服務(wù),甚至在 Docker Desktop 里還內(nèi)置了 Kubernetes。單就容器開發(fā)的便利性來講,Docker 還是暫時難以被替代的,廣大云原生開發(fā)者可以在這個熟悉的環(huán)境里繼續(xù)工作,利用 Docker 來開發(fā)運行在 Kubernetes 里的應(yīng)用。

再次,雖然 Kubernetes 已經(jīng)不再包含 dockershim,但 Docker 公司卻把這部分代碼接管了過來,另建了一個叫 cri-dockerd的項目,作用也是一樣的,把 Docker Engine 適配成 CRI 接口,這樣 kubelet 就又可以通過它來操作 Docker 了,就仿佛是一切從未發(fā)生過。

綜合來看,Docker 雖然在容器編排戰(zhàn)爭里落敗,被 Kubernetes 排擠到了角落,但它仍然具有強韌的生命力,多年來積累的眾多忠實用戶和數(shù)量龐大的應(yīng)用鏡像是它的最大資本和后盾,足以支持它在另一條不與 Kubernetes 正面交鋒的道路上走下去。而對于我們這些初學者來說,Docker 方便易用,具有完善的工具鏈和友好的交互界面,市面上很難找到能夠與它媲美的軟件了,應(yīng)該說是入門學習容器技術(shù)和云原生的“不二之選”。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    158

    瀏覽量

    10651
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11738
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    222

    瀏覽量

    8657

原文標題:Docker、Containerd和Kubernetes之間的關(guān)系

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Kubernetes架構(gòu)和核心組件組成 Kubernetes節(jié)點“容器運行時”技術(shù)分析

    的服務(wù),而這些都是受Master的控制。 每次個節(jié)點上當然都要運行DockerDocker來負責所有具體的映像下載和容器運行。 Kubernetes主要由以下幾個核心組件組成: 1)etcd保存了整個
    的頭像 發(fā)表于 09-25 15:53 ?3281次閱讀
    <b class='flag-5'>Kubernetes</b>架構(gòu)和核心組件組成 <b class='flag-5'>Kubernetes</b>節(jié)點“容器運行時”技術(shù)分析

    Containerd常見命令操作

    作為接替 Docker 運行時的 Containerd 在早在 Kubernetes1.7 時就能直接與 Kubelet 集成使用,只是大部分時候我們因熟悉 Docker,在部署集群時
    的頭像 發(fā)表于 08-30 10:08 ?4688次閱讀

    Kubernetes之路 2 - 利用LXCFS提升容器資源可見性

    摘要: 這是本系列的第2篇內(nèi)容,將介紹在DockerKubernetes環(huán)境中解決遺留應(yīng)用無法識別容器資源限制的問題。本系列文章記錄了企業(yè)客戶在應(yīng)用Kubernetes時的一些常見問題第一篇
    發(fā)表于 04-17 14:05

    Kubernetes和Mesos集成的優(yōu)勢與原理

    Kubernetes是一個docker集群管理工具,主要包含資源管理,部署運行,服務(wù)發(fā)現(xiàn),擴容縮容等功能,幫助用戶把所有的應(yīng)用都部署在Docker Container里邊,Kubernetes
    發(fā)表于 10-12 17:46 ?0次下載
    <b class='flag-5'>Kubernetes</b>和Mesos集成的優(yōu)勢與原理

    軟件容器平臺Docker受實體清單限制使用 Docker開源項目應(yīng)不受影響

    有網(wǎng)友指出此次 Docker 更新的服務(wù)協(xié)議只是針對 Docker Inc. 相關(guān)網(wǎng)站上提供的服務(wù),而大家常提的 Docker(包含 engine、runc 和 containerd
    的頭像 發(fā)表于 08-19 09:52 ?2613次閱讀

    解析DockerKubernetes、Openshift的發(fā)展歷史及架構(gòu)

    Kubernetes前身是谷歌大規(guī)模集群管理系統(tǒng)Brog,它基于容器技術(shù),實現(xiàn)資源管理的自動化,以及跨數(shù)據(jù)中心資源利用的最大化。Kubernetes于2015年正式對外發(fā)布,經(jīng)過4年多的發(fā)展,為容器編排提供強大的解決方案,成為云原生系統(tǒng)的重要支撐。
    的頭像 發(fā)表于 09-08 10:15 ?4170次閱讀

    簡單說明k8s和Docker之間關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡單說明,本文利用圖文講解的很透徹,有需要的同學可以研究下 最近項目用到kubernetes(以下簡稱k8s,k和s之間有8個字母)。雖然之前
    的頭像 發(fā)表于 06-24 15:48 ?3263次閱讀

    Kubernetes是什么,一文了解Kubernetes

    香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 Kubernetes 的基本概念,后面再介紹實踐,由淺入深步步為營。 關(guān)于 Kubernetes 的基本概念我們將會圍繞如下七點展開: 一、
    發(fā)表于 12-21 13:40 ?1740次閱讀
    <b class='flag-5'>Kubernetes</b>是什么,一文了解<b class='flag-5'>Kubernetes</b>

    docker-book DockerKubernetes開源書

    gitee-docker-book.zip
    發(fā)表于 04-19 14:22 ?0次下載
    <b class='flag-5'>docker</b>-book <b class='flag-5'>Docker</b>與<b class='flag-5'>Kubernetes</b>開源書

    Containerd控制runC的守護進程

    ./oschina_soft/containerd.zip
    發(fā)表于 05-11 10:05 ?0次下載
    <b class='flag-5'>Containerd</b>控制runC的守護進程

    一文詳解Kubernetes架構(gòu)原理

    打開這篇文章的同學,想必對 Docker 都不會陌生。Docker 是一種虛擬容器技術(shù),它上手比較簡單,只需在宿主機上起一個 Docker Engine,然后就能愉快的玩耍了,如:拉鏡像、起容器、掛載數(shù)據(jù)、映射端口等等。相對
    的頭像 發(fā)表于 07-14 09:50 ?977次閱讀

    什么是Kubernetes容器運行時CRI

    起初,Docker是事實上的容器技術(shù)標準,Kubernetes v1.5之前的代碼中直接調(diào)用Docker API,實現(xiàn)容器運行時的相關(guān)操作。
    的頭像 發(fā)表于 02-20 16:22 ?1337次閱讀
    什么是<b class='flag-5'>Kubernetes</b>容器運行時CRI

    Containerd基礎(chǔ)用法

    Docker 1.11 版本開始,Docker 容器運行就不是簡單通過 Docker Daemon 來啟動了,而是通過集成containerd、runc等多個組件來完成的。 雖然
    的頭像 發(fā)表于 04-11 10:50 ?664次閱讀

    docker容器與容器之間通信

    Docker是一種輕量級容器化技術(shù),能夠?qū)?yīng)用程序及其依賴項封裝在一個獨立、可移植的容器中。而容器化的應(yīng)用程序通常是以分布式方式設(shè)計的,因此實現(xiàn)容器與容器之間的通信至關(guān)重要。 本文將詳細介紹
    的頭像 發(fā)表于 11-23 09:36 ?1244次閱讀

    如何啟動本機docker服務(wù)

    Docker: sudo apt- get update sudo apt- get install docker-ce docker-ce-cli containerd.io 對于
    的頭像 發(fā)表于 11-23 09:43 ?1501次閱讀