容器的分類

容器是一個(gè)允許我們?cè)谫Y源隔離的過(guò)程中,運(yùn)行應(yīng)用程序和其依賴項(xiàng)的、輕量的、操作系統(tǒng)級(jí)別的虛擬化技術(shù),運(yùn)行應(yīng)用程序所需的所有必要組件都打包為單個(gè) 鏡像 ,這個(gè)鏡像是可以重復(fù)使用的。當(dāng)鏡像運(yùn)行時(shí),它是運(yùn)行在獨(dú)立的環(huán)境中,并不會(huì)和其他的應(yīng)用共享主機(jī)操作系統(tǒng)的內(nèi)存,CPU或磁盤。這保證了容器內(nèi)的進(jìn)程不會(huì)影響到容器外的任何進(jìn)程。

操作系統(tǒng)容器

根據(jù)維基 百科 ,“操作系統(tǒng)級(jí)虛擬化是一種計(jì)算機(jī)虛擬化方法,其中操作系統(tǒng)的內(nèi)核允許存在多個(gè)獨(dú)立的用戶空間實(shí)例,而不僅僅是一個(gè),這種實(shí)例有時(shí)稱為容器,虛擬化引擎(VEs)或監(jiān)獄(jails)(FreeBSD jail或chroot jail),從運(yùn)行程序的角度來(lái)看,它們可能看起來(lái)就像真正的計(jì)算機(jī)。

如上所述,它們共享主機(jī)操作系統(tǒng)的內(nèi)核,但提供用戶空間隔離。不同的應(yīng)用程序可以安裝,配置,并可以運(yùn)行,就像我們?cè)谥鳈C(jī)操作系統(tǒng)上運(yùn)行應(yīng)用程序一樣。同樣,分配給容器的資源只對(duì)該容器可見(jiàn)。任何其他外來(lái)操作系統(tǒng)鏡像將無(wú)法訪問(wèn)另一外來(lái)操作系統(tǒng)的資源。

當(dāng)需要配置一組具有相同配置的操作系統(tǒng)時(shí),它們非常有用。因此,它有助于創(chuàng)建模板,這可以用來(lái)創(chuàng)建與另一個(gè)操作系統(tǒng)類似的風(fēng)格。

要?jiǎng)?chuàng)建OS(操作系統(tǒng))容器,我們可以利用容器技術(shù),如LXC,OpenVZ,Docker,Linux VServer,BSD Jails和Solaris zones。

應(yīng)用程序容器

根據(jù)維基百科,“應(yīng)用程序虛擬化是一種軟件技術(shù),它將計(jì)算機(jī)程序從其執(zhí)行的底層操作系統(tǒng)中進(jìn)行封裝。完全虛擬化的應(yīng)用程序并不是按照傳統(tǒng)的意義來(lái)安裝的,盡管它仍然像以前一樣被執(zhí)行。應(yīng)用程序在運(yùn)行時(shí)表現(xiàn)得像是直接與原始操作系統(tǒng)及其管理的所有資源進(jìn)行交互,但可以在不同程度上進(jìn)行隔離或sandboxed(沙盒)處理。

在這種情況下,術(shù)語(yǔ)“虛擬化”是指被封裝的工件(應(yīng)用程序),它與硬件虛擬化中的含義完全不同,它指的是被抽象的物件(物理硬件)。

應(yīng)用程序容器被設(shè)計(jì)為將服務(wù)作為單個(gè)進(jìn)程打包和運(yùn)行,而在OS容器中,可以運(yùn)行多個(gè)服務(wù)和進(jìn)程。

像Docker和Rocket這樣的容器技術(shù)就是應(yīng)用程序容器的例子。