1. 程式人生 > >docker與虛擬機的區別

docker與虛擬機的區別

linu 在操作 虛擬 dock 不同的 區別 viso eight 鏡像

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。

docker與虛擬機的對比

技術分享圖片

主操作系統(Host Operating System):所有主流的Linux發行版都可以運行Docker。對於MacOS和Windows,也有一些辦法"運行"Docker。
Docker守護進程(Docker Daemon):Docker守護進程取代了Hypervisor,它是運行在操作系統之上的後臺進程,負責管理Docker容器。

各種依賴:對於Docker,應用的所有依賴都打包在Docker鏡像中,Docker容器是基於Docker鏡像創建的。
應用:應用的源代碼與它的依賴都打包在Docker鏡像中,不同的應用需要不同的Docker鏡像。不同的應用運行在不同的Docker容器中,它們是相互隔離的。

虛擬機與容器區別

啟動時間:Docker秒級啟動,虛擬機分鐘級啟動。

輕量級:docker鏡像大小通常以M為單位,虛擬機以G為單位。容器資源占用小,要比虛擬機部署更快速。

性能:docker共享宿主機內核,系統級虛擬化,占用資源少,沒有Hypervisor層開銷,性能基本接近物理機; 虛擬機需要Hypervisor層支持,虛擬化一些設備,具有完整的GuestOS,虛擬化開銷大,因而降低性能,沒有容器性能好。

安全性:由於共享宿主機內核,只是進程級隔離,因此隔離性和穩定性不如虛擬機,docker具有一定權限訪問宿主機內核,存在一定安全隱患。

使用要求:VM基於硬件的完全虛擬化,需要硬件CPU虛擬化技術支持; docker共享宿主機內核,可運行在主流的Linux發行版,不用考慮CPU是否支持虛擬化技術。

總結:虛擬機更擅長於徹底隔離整個運行環境。例如,雲服務提供商通常采用虛擬機技術隔離不同的用戶。

docker與虛擬機的區別