1.Docker有着比虛擬機更少的抽象層,由於Docker不需要Hypervisor實現硬件資源虛擬化,運行在Docker容器上的程序直接使用的都是實際物理機的硬件資源,因此在Cpu、內存利用率上Docker將會在效率上有明顯優勢。
2.Docker利用的是宿主機的內核,而不需要Guest OS,因此,當新建一個容器時,Docker不需要和虛擬機一樣重新加載一個操作系統,避免了引導、加載操作系統內核這個比較費時費資源的過程,當新建一個虛擬機時,虛擬機軟件需要加載Guest OS,這個新建過程是分鍾級別的,而Docker由於直接利用宿主機的操作系統則省略了這個過程,因此新建一個Docker容器只需要幾秒鍾。
Docker容器 | 虛擬機(VM) | |
操作系統 | 與宿主機共享OS | 宿主機OS上運行宿主機OS |
存儲大小 | 鏡像小,便於存儲與傳輸 | 鏡像龐大(vmdk等) |
運行性能 | 幾乎無額外性能損失 | 操作系統額外的cpu、內存消耗 |
移植性 | 輕便、靈活、適用於Linux | 笨重、與虛擬化技術耦合度高 |
硬件親和性 | 面向軟件開發者 | 面向硬件運維者 |