docker與虛擬機的區別

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

虛擬機(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秒級啓動,虛擬機分鐘級啓動。spa

輕量級:docker鏡像大小一般以M爲單位,虛擬機以G爲單位。容器資源佔用小,要比虛擬機部署更快速。操作系統

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

安全性:因爲共享宿主機內核,只是進程級隔離,所以隔離性和穩定性不如虛擬機,docker具備必定權限訪問宿主機內核,存在必定安全隱患。接口

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

總結:虛擬機更擅長於完全隔離整個運行環境。例如,雲服務提供商一般採用虛擬機技術隔離不一樣的用戶。資源

相關文章
相關標籤/搜索