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