Docker容器與虛擬機區別



Docker 與虛擬機 
虛擬機:
我們傳統的虛擬機需要模擬整台機器包括硬件,每台虛擬機都需要有自己的操作系統,虛擬機一旦被開啟,預分配給他的資源將全部被占用。,每一個虛擬機包括應用,必要的二進制和庫,以及一個完整的用戶操作系統。
Docker:
容器技術是和我們的宿主機共享硬件資源及操作系統可以實現資源的動態分配。
容器包含應用和其所有的依賴包,但是與其他容器共享內核。容器在宿主機操作系統中,在用戶空間以分離的進程運行。

 

虛擬機和容器都是在硬件和操作系統以上的,虛擬機有Hypervisor層,Hypervisor是整個虛擬機的核心所在。他為虛擬機提供了虛擬的運行平台,管理虛擬機的操作系統運行。每個虛擬機都有自己的系統和系統庫以及應用。

容器沒有Hypervisor這一層,並且每個容器是和宿主機共享硬件資源及操作系統,那么由Hypervisor帶來性能的損耗,在linux容器這邊是不存在的。
但是虛擬機技術也有其優勢,能為應用提供一個更加隔離的環境,不會因為應用程序的漏洞給宿主機造成任何威脅。同時還支持跨操作系統的虛擬化,例如你可以在linux操作系統下運行windows虛擬機。

從虛擬化層面來看,傳統虛擬化技術是對硬件資源的虛擬,容器技術則是對進程的虛擬,從而可提供更輕量 級的虛擬化,實現進程和資源的隔離。
從架構來看,Docker比虛擬化少了兩層,取消了hypervisor層和GuestOS層,使用 Docker Engine 進行調度和隔離,所有應用共用主機操作系統,因此在體量上,Docker較虛擬機更輕量級,在性能上優於虛擬化,接近裸機性能。從應用場景來 看,Docker和虛擬化則有各自擅長的領域,在軟件開發、測試場景和生產運維場景中各有優劣

具體對比:
1. docker啟動快速屬於秒級別。虛擬機通常需要幾分鍾去啟動。
2. docker需要的資源更少,docker在操作系統級別進行虛擬化,docker容器和內核交互,幾乎沒有性能損耗,性能優於通過Hypervisor層與內核層的虛擬化。;
3. docker更輕量,docker的架構可以共用一個內核與共享應用程序庫,所占內存極小。同樣的硬件環境,Docker運行的鏡像數遠多於虛擬機數量。對系統的利用率非常高
4. 與虛擬機相比,docker隔離性更弱,docker屬於進程之間的隔離,虛擬機可實現系統級別隔離;
5. 安全性: docker的安全性也更弱。Docker的租戶root和宿主機root等同,一旦容器內的用戶從普通用戶權限提升為root權限,它就直接具備了宿主機的root權限,進而可進行無限制的操作。虛擬機租戶root權限和宿主機的root虛擬機權限是分離的,並且虛擬機利用如Intel的VT-d和VT-x的ring-1硬件隔離技術,這種隔離技術可以防止虛擬機突破和彼此交互,而容器至今還沒有任何形式的硬件隔離,這使得容器容易受到攻擊。
6. 可管理性:docker的集中化管理工具還不算成熟。各種虛擬化技術都有成熟的管理工具,例如VMware vCenter提供完備的虛擬機管理能力。
7. 高可用和可恢復性:docker對業務的高可用支持是通過快速重新部署實現的。虛擬化具備負載均衡,高可用,容錯,遷移和數據保護等經過生產實踐檢驗的成熟保障機制,VMware可承諾虛擬機99.999%高可用,保證業務連續性。
8. 快速創建、刪除:虛擬化創建是分鍾級別的,Docker容器創建是秒級別的,Docker的快速迭代性,決定了無論是開發、測試、部署都可以節約大量時間。
9. 交付、部署:虛擬機可以通過鏡像實現環境交付的一致性,但鏡像分發無法體系化;Docker在Dockerfile中記錄了容器構建過程,可在集群中實現快速分發和快速部署;

 

 

本人內容來自於互聯網各相關文章的總結,感謝原創博主。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM