Docker和虛擬機的區別

一、 本質上的區別

圖片描述

VM(VMware)在宿主機器、宿主機器操作系統的基礎上創建虛擬層、虛擬化的操作系統、虛擬化的倉庫,然後再安裝應用;
Container(Docker容器),在宿主機器、宿主機器操作系統上創建Docker引擎,在引擎的基礎上再安裝應用。
那麼問題來了,沒有操作系統,怎麼運行程序?
可以在Docker中創建一個ubuntu的鏡像文件,這樣就能將ubuntu系統集成到Docker中,運行的應用就都是ubuntu的應用。

二、使用上的區別:

圖片描述

size:

1.虛擬機中ubuntu所佔內存:

圖片描述

2.Docker容器中ubuntu鏡像文件所佔內存:

圖片描述

Startup:

 Docker在宿主機器的操作系統上創建Docker引擎,直接在宿主主機的操作系統上調用硬件資源,而不是虛擬化操作系統和硬件資源,所以操作速度快。
這個其實安裝一個ubuntu的虛擬機和拉取一個Docker的ubuntu鏡像文件,運行一下就知道了,區別很明顯,虛擬機開一下大概得2分多鐘,而Docker只需要2秒鐘。

Integration:

Docker的集成性要比VM好。這個並沒有深入研究,不過可以提供一個博客,這裏面關於Docker集成的內容寫的很好。
https://blog.csdn.net/karamos...

三、Docker特點

1)上手快

用戶只需要幾分鐘,就可以把自己的程序“Docker 化”。Docker 依賴於“寫時複製” (copy-on-write)模型,使修改應用程序也非常迅速,可以說達到“隨心所致,代碼即改” 的境界。隨後,就可以創建容器來運行應用程序了。大多數 Docker 容器只需要不到 1 秒中即可 啓動。由於去除了管理程序的開銷,Docker 容器擁有很高的性能,同時同一臺宿主機中也 可以運行更多的容器,使用戶儘可能的充分利用系統資源。

2)職責的邏輯分類

使用 Docker,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如 何管理容器。Docker 設計的目的就是要加強開發人員寫代碼的開發環境與應用程序要部署 的生產環境一致性。從而降低那種“開發時一切正常,肯定是運維的問題(測試環境都是正 常的,上線後出了問題就歸結爲肯定是運維的問題)”

3)快速高效的開發生命週期

Docker 的目標之一就是縮短代碼從開發、測試到部署、上線運行的週期,讓你的應用 程序具備可移植性,易於構建,並易於協作。(通俗一點說,Docker 就像一個盒子,裏面 可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件 件的取。)

4)鼓勵使用面向服務的架構

Docker 還鼓勵面向服務的體系結構和微服務架構。Docker 推薦單個容器只運行一個應 用程序或進程,這樣就形成了一個分佈式的應用程序模型,在這種模型下,應用程序或者服 務都可以表示爲一系列內部互聯的容器,從而使分佈式部署應用程序,擴展或調試應用程序 都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程 序)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章