虛擬機和Docker的最大區別

Docker CPU Linux 軟件 物理 汪子熙SAP 2018-12-03

使用Vagrant和KVM 或者Hyper-V我們可以構建和運行虛擬機。相關的工具比如 ansible, chef 或者puppet可以用來進行環境的設置和配置。

虛擬機和Docker的最大區別

虛擬機和Docker的最大區別

虛擬機和Docker都能夠給一臺宿主機上的應用提供隔離的運行環境。區別是什麼呢?

從上圖右邊虛擬機架構圖能看出,虛擬機裡在宿主操作系統和物理硬件之間多了一箇中間層:Hypervisor。

Hypervisor是一種運行在物理服務器和操作系統之間的中間軟件層,可允許多個操作系統和應用共享一套基礎物理硬件,事實上成為虛擬環境中的“元”操作系統,Hypervisor可以協調訪問服務器上的所有物理設備和虛擬機,也稱為虛擬機監視器(Virtual Machine Monitor)。Hypervisor是所有虛擬化技術的核心。當服務器啟動並執行Hypervisor時,它會給每一臺虛擬機分配適量的內存、CPU、網絡和磁盤,並加載所有虛擬機的客戶操作系統,每臺虛擬機有自己的虛擬操作系統和存儲空間,因此需要消耗宿主機大量的物理資源,同時也需要花費一定時間來啟動。

而上圖左邊,Docker直接運行在宿主機的操作系統上,沒有Hypervisor這個中間層。Docker實際上就是運行於操作系統上的普通進程,通過Linux Primitives實現的彼此隔離,但是共享同一個操作系統內核。

虛擬機和Docker的最大區別

正因為這種共享性,使得Docker的資源佔用遠小於虛擬機,而且啟動速度也遠遠快於虛擬機。

相關推薦

推薦中...