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