Tungsten Fabric SDN — SmartNIC vRouter
786
2022-05-28
我猜很多人一看這個標題已經(jīng)感覺很懵逼了,什么?下一代容器都出來了,我還沒學Docker呢!?。?/p>
咳咳~~在這里我給大家做一個保證,下一代容器目前也只是各個公司在測試階段,Github上面也有很多Issue,因此,大家可以放寬心,下一代容器離我們還很遠呢。
切入正題:
我們今天討論的是《下一代容器架構已出,Docker何去何處?》
其實就目前來說,下一代容器架構可以約等于≒Podman+Skopeo+Buildah
其實這半年來很多自媒體都在鼓吹新的容器架構,吹噓將要很快的替代Docker。但是很少人討論新的架構和老的架構的區(qū)別,以及目前遷移的可能性等等等等。。。這些都是擺在企業(yè)面前去接觸新架構的大山。所以,我們今天不做具體的新容器架構實戰(zhàn),我們只回答以下幾個問題。
下面開始,我要做一波自問自答了
Q1 什么是Linux容器以及它如何工作?
一句話回答:就像港口的集裝箱
(1)linux容器又名LXC(Linux Container),我們要形象的理解Linux容器的話,我們可以把它想象成集裝箱,而操作系統(tǒng)就像港口。集裝箱的特色,在于其格式劃一,并可以層層重疊。它是一種內(nèi)核輕量級的操作系統(tǒng)層虛擬化技術。
(2)容器通過四個主要組件工作:名稱空間(namespaces),控制組(cgroups),映像(images)和用戶空間工具例如Docker。Linux系統(tǒng)上的所有進程都從init進程fork派生。Linux容器的一個主要組件是在新的命名空間下創(chuàng)建一個新的init進程。因此,僅憑名稱空間(namespaces),我們就有能力生成一個進程樹并操縱一些底層系統(tǒng)資源,而不會影響主機系統(tǒng)。那另一個問題,是什么來阻止新產(chǎn)生的容器過度使用主機的資源呢?使用cgroups,我們可以限制CPU使用率,內(nèi)存,磁盤等等,這樣我們就能夠保證我們創(chuàng)建的容器在合理使用的范疇內(nèi)。最后映像(images)和用戶空間工具就是幫助我們更便捷的使用LXC。
Q2 什么是OCI、CRI、CNI?
一句話回答:接口抽象化
(1)回答這個問題之前呢?需要先說一下容器發(fā)展的歷史:一開始是Docker.io公司推出了容器Docker,但其實容器并非只要Docker,這樣帶來一個問題是很多做容器編排的公司都要去兼容所有的容器類型。于是后來北美的一些大廠就開始討論聯(lián)合指定一個統(tǒng)一的規(guī)范,以后做容器的公司都要以這個為準,這個標準就是 Open Container Initiative(OCI)。
(2)CRI是OCI標準中的其中一個,“容器運行時標準”,它定義了容器在硬盤上存儲的方式,用于描述容器中應用程序的 JSON 文件和如何創(chuàng)建和運行容器。Docker.io貢獻了 libcontainer,并且提供了 runc 作為 OCI 運行時規(guī)范的默認實現(xiàn)。