我曾經(jīng)將Docker容器視為輕量級(jí),精簡的虛擬機(jī)。 進(jìn)行這種比較是有道理的,因?yàn)橹辽僭贒ocker的最初市場中,總是將其與虛擬機(jī)進(jìn)行比較-例如," Docker花費(fèi)的啟動(dòng)時(shí)間少于VM,等等"。
但是docker容器不是虛擬機(jī)。
讓我們對(duì)Docker容器和虛擬機(jī)進(jìn)行并排比較。
虛擬機(jī)
虛擬機(jī)(VM)是物理硬件的抽象,它將一臺(tái)服務(wù)器變成很多服務(wù)器。 虛擬機(jī)管理程序允許多個(gè)VM在單臺(tái)計(jì)算機(jī)上運(yùn)行。 每個(gè)VM均包含操作系統(tǒng),應(yīng)用程序以及必要的二進(jìn)制文件和庫的完整副本-占用數(shù)十GB。 VM也可能啟動(dòng)緩慢。
> follow devkube.blogsopt.com
虛擬機(jī)架構(gòu)
假設(shè)有許多層。 連接這些層后,它們便構(gòu)成了虛擬機(jī)。
虛擬機(jī)基礎(chǔ)結(jié)構(gòu)的底層主要是虛擬機(jī)的硬件。
該硬件層主要是運(yùn)行虛擬機(jī)所需的硬件池。 它主要由Ram組成-它可以是SSD(通常是SSD),甚至是低性能的HDD,CPU等。
在此層之上,運(yùn)行一個(gè)主機(jī)操作系統(tǒng)-通常是Linux,有時(shí)是Windows。 在此之上,有一個(gè)稱為管理程序?qū)拥膶印?系統(tǒng)管理程序?qū)佑袃煞N類型。 一種運(yùn)行在主要用于數(shù)據(jù)中心的硬件層之上,另一種運(yùn)行在用于VMware或VirtualBox等程序的操作系統(tǒng)之上。
在此Hypervisor層之上,運(yùn)行來賓OS塊。 假設(shè)您要彼此完全隔離地運(yùn)行三種不同類型的應(yīng)用程序,則需要啟動(dòng)三個(gè)獨(dú)立的VM。 系統(tǒng)管理程序直接控制這三個(gè)VMS。
但是現(xiàn)在想象一下,這三個(gè)虛擬機(jī)有其操作系統(tǒng)-Linux或Windows。 現(xiàn)在,假設(shè)他們具有Linux操作系統(tǒng),因此每個(gè)OS大約為700mb。 我們必須啟動(dòng)三個(gè)VM,這些VM在我們的操作系統(tǒng)上占據(jù)大約2.1GB的存儲(chǔ)空間。 最重要的是,每個(gè)來賓OS都需要一套自己的bin /庫-Python依賴項(xiàng),Node模塊等,以奠定運(yùn)行該應(yīng)用程序的基礎(chǔ)。
現(xiàn)在,最后,我們?cè)诖酥暇哂形覀兊腁pplication層,該層通常是您已構(gòu)建的應(yīng)用程序的源代碼
什么是容器?
容器是應(yīng)用程序?qū)拥某橄螅瑢⒋a和依賴項(xiàng)打包在一起。 多個(gè)容器可以在同一臺(tái)計(jì)算機(jī)上運(yùn)行,并與其他容器共享其OS內(nèi)核,每個(gè)容器在用戶空間中作為隔離的進(jìn)程運(yùn)行。 容器占用的空間少于VM(容器映像的大小通常為幾十MB),可以處理更多的應(yīng)用程序,并且需要的VM和操作系統(tǒng)更少。
> Follow devkube.blogspot.com
Docker容器架構(gòu)
Docker并不是魔術(shù),而是需要一些基礎(chǔ)硬件來運(yùn)行。 因此,第一層(硬件層)是虛擬機(jī)層基礎(chǔ)結(jié)構(gòu)所共有的。
在此之上,有一個(gè)主機(jī)操作系統(tǒng)。 它可以是能夠運(yùn)行Docker的任何操作系統(tǒng)。 Docker支持所有主要的Linux發(fā)行版,并且有一些方法可以在Windows計(jì)算機(jī)和Mac上運(yùn)行Docker。
現(xiàn)在進(jìn)入第三層。 這里有一些有趣的東西。 Docker守護(hù)程序替換了該層,該層是虛擬機(jī)體系結(jié)構(gòu)中的管理程序?qū)印?該服務(wù)在后臺(tái)運(yùn)行,負(fù)責(zé)運(yùn)行Docker容器。
然后Bin / Libray駐留在該應(yīng)用程序的容器中,并且有該應(yīng)用程序的源代碼。 Docker守護(hù)程序管理所有這些容器層。
因此,我們不需要來賓操作系統(tǒng),并節(jié)省了它所占用的內(nèi)存量。 我們還保存了運(yùn)行這些VM時(shí)機(jī)器上的負(fù)載。
在這里,每個(gè)應(yīng)用程序都相互隔離,因?yàn)樗淹泄茉诓煌娜萜髦校晕挥谕恢鳈C(jī)OS上。
-
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
914瀏覽量
28160 -
Docker
+關(guān)注
關(guān)注
0文章
457瀏覽量
11846
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論