具體區(qū)別分析如下:
一、本質上的區(qū)別
(推薦教程:docker教程)
vm(vmware)在宿主機器、宿主機器操作系統(tǒng)的基礎上創(chuàng)建虛擬層、虛擬化的操作系統(tǒng)、虛擬化的倉庫,然后再安裝應用;
container(docker容器),在宿主機器、宿主機器操作系統(tǒng)上創(chuàng)建docker引擎,在引擎的基礎上再安裝應用。
那么問題來了,沒有操作系統(tǒng),怎么運行程序?
可以在docker中創(chuàng)建一個ubuntu的鏡像文件,這樣就能將ubuntu系統(tǒng)集成到docker中,運行的應用就都是ubuntu的應用
二、使用上的區(qū)別
size:
虛擬機中ubuntu所占內存:
docker容器中ubuntu鏡像文件所占內存:
startup:
docker在宿主機器的操作系統(tǒng)上創(chuàng)建docker引擎,直接在宿主主機的操作系統(tǒng)上調用硬件資源,而不是虛擬化操作系統(tǒng)和硬件資源,所以操作速度快。
這個其實安裝一個ubuntu的虛擬機和拉取一個docker的ubuntu鏡像文件,運行一下就知道了,區(qū)別很明顯,虛擬機開一下大概得2分多鐘,而docker只需要2秒鐘。
integration:
docker的集成性要比vm好。
三、docker特點
1、上手快
用戶只需要幾分鐘,就可以把自己的程序“docker 化”。docker 依賴于“寫時復制” (copy-on-write)模型,使修改應用程序也非常迅速,可以說達到“隨心所致,代碼即改” 的境界。
隨后,就可以創(chuàng)建容器來運行應用程序了。大多數(shù) docker 容器只需要不到 1 秒中即可啟動。由于去除了管理程序的開銷,docker 容器擁有很高的性能,同時同一臺宿主機中也可以運行更多的容器,使用戶盡可能的充分利用系統(tǒng)資源。
2、職責的邏輯分類
使用 docker,開發(fā)人員只需要關心容器中運行的應用程序,而運維人員只需要關心如何管理容器。docker 設計的目的就是要加強開發(fā)人員寫代碼的開發(fā)環(huán)境與應用程序要部署的生產(chǎn)環(huán)境一致性。從而降低那種“開發(fā)時一切正常,肯定是運維的問題(測試環(huán)境都是正 常的,上線后出了問題就歸結為肯定是運維的問題)”
3、快速高效的開發(fā)生命周期
docker 的目標之一就是縮短代碼從開發(fā)、測試到部署、上線運行的周期,讓你的應用程序具備可移植性,易于構建,并易于協(xié)作。(通俗一點說,docker 就像一個盒子,里面 可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件件的取。)
4)鼓勵使用面向服務的架構
docker 還鼓勵面向服務的體系結構和微服務架構。docker 推薦單個容器只運行一個應用程序或進程,這樣就形成了一個分布式的應用程序模型,在這種模型下,應用程序或者服務都可以表示為一系列內部互聯(lián)的容器,從而使分布式部署應用程序,擴展或調試應用程序都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程序)