docker 對比 VM虛擬機器

2021-09-25 21:50:07 字數 1986 閱讀 8350

當我遇到docker的時候,我只能用興奮來形容,真好用!今天看見網上將它和vm虛擬機器進行了對比,我也去搜尋了一波。以此作為總結記錄。

從架構部分來看:這張圖應該是表現最合理的,從圖上可以看出,在基礎架構部分之上vm多了一層hypervisor(虛擬機器管理系統),在這個之上又多了一層客戶機作業系統guest os,相比docker,docker直接通過docker 守護程序使用宿主機的資源。

到這裡就可以看出,docker的資源利用率會優於vm。畢竟少了這麼多層的東西,小巧得多,虛擬機器起一次花費的時間遠遠超過docker。

引用其它部落格的理論性總結:

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

容器沒有hypervisor這一層,並且每個容器是和宿主機共享硬體資源及作業系統,那麼由hypervisor帶來效能的損耗,在linux容器這邊是不存在的。

但是虛擬機器技術也有其優勢,能為應用提供乙個更加隔離的環境,不會因為應用程式的漏洞給宿主機造成任何威脅。同時還支援跨作業系統的虛擬化,例如你可以在linux作業系統下執行windows虛擬機器。

從虛擬化層面來看,傳統虛擬化技術是對硬體資源的虛擬,容器技術則是對程序的虛擬,從而可提供更輕量 級的虛擬化,實現程序和資源的隔離。

從架構來看,docker比虛擬化少了兩層,取消了hypervisor層和guestos層,使用 docker engine 進行排程和隔離,所有應用共用主機作業系統,因此在體量上,docker較虛擬機器更輕量級,在效能上優於虛擬化,接近裸機效能。從應用場景來 看,docker和虛擬化則有各自擅長的領域,在軟體開發、測試場景和生產運維場景中各有優劣。

具體對比:

docker啟動快速屬於秒級別。虛擬機器通常需要幾分鐘去啟動。

docker需要的資源更少,docker在作業系統級別進行虛擬化,docker容器和核心互動,幾乎沒有效能損耗,效能優於通過hypervisor層與核心層的虛擬化。;

docker更輕量,docker的架構可以共用乙個核心與共享應用程式庫,所佔記憶體極小。同樣的硬體環境,docker執行的映象數遠多於虛擬機器數量。對系統的利用率非常高

與虛擬機器相比,docker隔離性更弱,docker屬於程序之間的隔離,虛擬機器可實現系統級別隔離;

安全性: docker的安全性也更弱。docker的租戶root和宿主機root等同,一旦容器內的使用者從普通使用者許可權提公升為root許可權,它就直接具備了宿主機的root許可權,進而可進行無限制的操作。虛擬機器租戶root許可權和宿主機的root虛擬機器許可權是分離的,並且虛擬機器利用如intel的vt-d和vt-x的ring-1硬體隔離技術,這種隔離技術可以防止虛擬機器突破和彼此互動,而容器至今還沒有任何形式的硬體隔離,這使得容器容易受到攻擊。

可管理性:docker的集中化管理工具還不算成熟。各種虛擬化技術都有成熟的管理工具,例如vmware vcenter提供完備的虛擬機器管理能力。

高可用和可恢復性:docker對業務的高可用支援是通過快速重新部署實現的。虛擬化具備負載均衡,高可用,容錯,遷移和資料保護等經過生產實踐檢驗的成熟保障機制,vmware可承諾虛擬機器99.999%高可用,保證業務連續性。

快速建立、刪除:虛擬化建立是分鐘級別的,docker容器建立是秒級別的,docker的快速迭代性,決定了無論是開發、測試、部署都可以節約大量時間。

交付、部署:虛擬機器可以通過映象實現環境交付的一致性,但映象分發無法體系化;docker在dockerfile中記錄了容器構建過程,可在集群中實現快速分發和快速部署;

引用出處:

也是學習,也沒有搜到更好的對比資料了,不過最主要的差別還在架構不同吧。至於那種很高階的話題,小白也不會懂,因為知識面不夠,了解這麼多就可以了!之後會以docker為什麼這麼快的話題進行討論加以總結。

VM虛擬機器安裝Docker

centos centos 7 x86 64 1810.iso vm 15 pro systemctl status firewalld 檢視防火牆狀態 systemctl stop firewalld 停止防火牆 systemctl disable firewalld 禁止開機啟動 這兩位老哥講的...

Docker與VM虛擬機器的比較

所有的應用程式都有自己的依賴關係,其中包括軟體和硬體資源。docker是開發者的開放平台,通過將每個應用程式打包到容器中來隔離依賴關係。容器就像是輕量級的虛擬機器,可以擴充套件到成千上萬的節點,通過在不同虛擬環境中執行相同應用程式來幫助提公升雲的可移植性。虛擬機器廣泛用於雲計算,通過使用虛擬機器來實...

Docker與VM虛擬機器的比較

所有的應用程式都有自己的依賴關係,其中包括軟體和硬體資源。docker是開發者的開放平台,通過將每個應用程式打包到容器中來隔離依賴關係。容器就像是輕量級的虛擬機器,可以擴充套件到成千上萬的節點,通過在不同虛擬環境中執行相同應用程式來幫助提公升雲的可移植性。虛擬機器廣泛用於雲計算,通過使用虛擬機器來實...