具體區別分析如下:
一、本質上的差異
(推薦教學:docker教學)
VM(VMware)在宿主機器、宿主機器作業系統的基礎上建立虛擬層、虛擬化的作業系統、虛擬化的倉庫,然後再安裝應用;
##Container( Docker容器),在宿主機器、宿主機器作業系統上建立Docker引擎,在引擎的基礎上再安裝應用。
那麼問題來了,沒有作業系統,怎麼運行程式?
可以在Docker中建立一個ubuntu的映像文件,這樣就能將ubuntu系統整合到Docker中,運行的應用程式就都是ubuntu的應用
二、使用上的差別
Size:
虛擬機器中ubuntu所佔記憶體:
Docker容器中ubuntu映像檔所佔記憶體:
Startup:
Docker在宿主機器的作業系統上建立Docker引擎,直接在宿主主機的作業系統上呼叫硬體資源,而不是虛擬化作業系統和硬體資源,所以操作速度快。
這個其實安裝一個ubuntu的虛擬機和拉取一個Docker的ubuntu鏡像文件,運行一下就知道了,區別很明顯,虛擬機開一下大概得2分多鐘,而Docker只需要2秒鐘。
Integration:
Docker的整合性比VM好。
三、Docker特點
1、上手快
用戶只需要幾分鐘,就可以把自己的程式「Docker 化」。 Docker 依賴「寫時複製」 (copy-on-write)模型,讓修改應用程式也非常迅速,可以說達到「隨心所欲,程式碼即改」 的境界。
隨後,就可以建立容器來運行應用程式了。大多數 Docker 容器只需要不到 1 秒鐘即可啟動。由於移除了管理程式的開銷,Docker 容器擁有很高的效能,同時同一台宿主機中也可以運作更多的容器,使用戶盡可能的充分利用系統資源。
2、職責的邏輯分類
使用 Docker,開發人員只需要關心容器中運行的應用程序,而維運人員只需要關心如何管理容器。 Docker 設計的目的是要加強開發人員編寫程式碼的開發環境與應用程式要部署的生產環境一致性。從而降低那種「開發時一切正常,肯定是運維的問題(測試環境都是正常的,上線後出了問題就歸結為肯定是運維的問題)」
3、快速高效的開發生命週期
Docker 的目標之一就是縮短程式碼從開發、測試到部署、上線運行的周期,讓你的應用程式具備可移植性,易於構建,並且易於協作。 (通俗一點說,Docker 就像一個盒子,裡面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件件的取。)
#4)鼓勵使用服務導向的架構
Docker 也鼓勵服務導向的體系結構和微服務架構。 Docker 推薦單一容器只運行一個應用程式或進程,這樣就形成了一個分散式的應用程式模型,在這種模型下,應用程式或服務都可以表示為一系列內部互聯的容器,從而使分散式部署應用程序,擴展或調試應用程式都變得非常簡單,同時也提高了程式的內省性。 (當然,可以在一個容器中運行多個應用程式)
以上是docker與虛擬機器有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!