日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker概念很乱?俺来替你理一下!

發(fā)布時間:2024/8/26 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker概念很乱?俺来替你理一下! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

docker是什么?OCI又是什么?CRI又是什么?containerd又TM是什么?有沒有感覺概念非常的亂?

造成這一切亂象的根本,是各個利益公司之間的競爭造成的。商業(yè)競爭造成了用戶的困擾,尤其是每個公司都在推銷自己技術(shù)概念的時候。

接下來,俺將按照自己的理解方式,嘗試為你解讀這些操蛋的名詞,讓你對容器技術(shù)更多一些了解。如果你正在使用的是docker,你會發(fā)現(xiàn)這個可憐的,容器時代的引領(lǐng)者,正在慢慢丟掉自己的所有。

Docker并不是全部

自從docker加入了鏡像倉庫,引爆了容器技術(shù),很多人認為docker就代表了容器的全部。這種觀點很普遍,主要是由于docker實在是太火了。即使k8s二次官宣拋棄docker,它的熱度依然不減。

其實,現(xiàn)階段,docker只是眾多容器技術(shù)中的其中一種。它有三個主要的概念。

  • 鏡像??代表了最終的軟件包,不可變的軟件載體。相當于安裝文件

  • 容器?鏡像的運行時,實際運行的實例,具有明確的進程號

  • 倉庫?存放鏡像的倉庫,可以進行統(tǒng)一的版本管理和權(quán)限管理

docker是運行時和一堆開發(fā)工具集合的統(tǒng)稱。docker-cli就不必多說了,就是一堆命令行的集合,我們主要看一下運行時。

  • docker?我們平常操作docker,使用的就是docker命令,它就是我們所說的命令行接口,相當于一個客戶端。它將指令發(fā)送到dockerd

  • dockerd?docker的服務(wù)端。比如我們在Linux上安裝docker,就要啟動一個常駐進程,才能管理所有的docker進程

  • containerd?這個組件,是從Docker1.11版本才有的,是從dockerd里拆出來的,是容器標準化后的產(chǎn)物。它遵循的是OCI標準,這個標準后面我們還會用圖來說明它的位置。containerd功能齊全,換句話說,你的服務(wù)器上可以沒有dockerd,只需要containerd就能運行你的容器

  • runc?容器運行時組件,是一個標準的OCI容器實現(xiàn)運行時,可用來直接創(chuàng)建和運行容器。可以看到containerd和runc都是OCI的實現(xiàn),區(qū)別是前者是管理工具,后者是運行容器

  • containerd-shim?墊片的意思,主要是將containerd與真正的容器進行解耦

  • ctr?也叫做containerd-ctr,是containerd的客戶端

你可能會特別奇怪,僅僅一個小小的docker,怎么就分了這么多層!按照常理,俺只需要一個client端,一個守護進程就夠了,怎么拆分了這么多層?

這是由于歷史發(fā)展原因引起的。為了解耦,為了實現(xiàn)OCI標準,docker的組件不得不拆了又拆,最后形成了一個松耦合的架構(gòu)。后來,由于k8s加入競爭,又出現(xiàn)了一個新的名詞:CRI。接下來,我們綜合k8s,來看一下各個組件所存在的層次。

兩個標準割裂世界

為什么搞得這么復(fù)雜,主要是因為兩個標準的加入。CRI和OCI。下面這張買QQ平臺大圖,大體體現(xiàn)了它們之間的關(guān)系。

OCI全稱是Open Container Initiative,定義得是容器運行時得標準。這個標準,使用Linux的cgroup和namespace等技術(shù),和docker所使用的技術(shù)沒什么兩樣。docker只不過是OCI的一個實現(xiàn)而已,就像gVisor(runsc)所實現(xiàn)的一樣。

CRI是全稱是Container Runtime Interface,是k8s定義的一套與容器運行時進行交互的接口。containerd就是docker為了適應(yīng)這個標準而開發(fā)的CRI實現(xiàn),但它已經(jīng)是CNCF的了,不再屬于docker了。

當然,除了containerd其他廠商也可以基于CRI-O做一些事情,同樣實現(xiàn)了CRI接口。這樣就可以無縫接入到k8s中,比如redhat的OpenShift,就選用的CRI-O。但對于容器的真正調(diào)度,其實還是OCI負責的,CRI只是個中轉(zhuǎn)站而已。比如,Podman,原來就是CRI-O項目的一部分,現(xiàn)在它可以直接操作runc來啟動容器。

docker整個體系,被兩個標準攔腰斬了兩次,組件多也就不足為怪了。

在早些版本中,k8s為了支持docker,不得不包含一個叫做dockershim的組件。后來,k8s宣布不再支持docker,其實是放棄了dockershim組件,我們依然可以使用containerd來調(diào)用docker的所有功能。

”k8s不再支持docker“,這種文字游戲,讓很多人過早的放棄了docker。

總結(jié)

2020年12月8日,k8s再次發(fā)布了棄用docker的文章。

這種文字游戲,無疑再次給docker以暴擊。很多公司,其實運行的docker好好的,但主流調(diào)度系統(tǒng)這么一發(fā)聲,就必須研究一些雷同的技術(shù),來應(yīng)對可能會出現(xiàn)的技術(shù)變革。

早在2014年,docker的商業(yè)化態(tài)度還是非常強硬的,先后得罪了coreos,redhat等一系列組織,拒絕了google推出中立容器的合作。從關(guān)系親密到反目成仇,也是讓人無限感概。CNCF云原生基金的成立,已經(jīng)宣告了docker商業(yè)化的失敗,docker甚至自己搞了個開源版本moby。丟了編排調(diào)度,理念被fork,這一切都讓docker慢慢的丟掉自己的話語權(quán)。

事實證明,docker的母公司,撐不起云原生這么大的蛋糕。大眾還是希望選擇一些巨人公司,然后匍匐在它的腳下。

這個選擇,就是CNCF,目前還是一個比較開放的組織。相比較而言,docker是一個商業(yè)化產(chǎn)品。受益于開源,podman定位于取代docker,它是redhat出品。

不開源讓你滅亡,是docker的最終結(jié)果。但開源呢?目前來看,開源界,絕大部分,不過是集體為google,亞馬遜,oracle等幾家巨頭打免費的工罷了。

總結(jié)

以上是生活随笔為你收集整理的docker概念很乱?俺来替你理一下!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。