區(qū)別:1、啟動(dòng)速度上,Docker是秒級(jí)的,kvm是分鐘級(jí)的;2、與kvm相比,Docker應(yīng)用的性能高,同時(shí)系統(tǒng)的開(kāi)銷(xiāo)小;3、保存狀態(tài)上,Docker比kvm更為輕便和低成本;4、硬盤(pán)使用上,Docker以MB為單位,kvm以GB為單位。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、docker-1.13.1版、Dell G3電腦。
Docker簡(jiǎn)介
Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。
在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶(hù)不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶(hù)操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。
下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處,可見(jiàn)容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實(shí)現(xiàn)。
Docker與KVM(傳統(tǒng)虛擬機(jī))對(duì)比
作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。
1、Docker容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。 其次,Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。
2、容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開(kāi)銷(xiāo)盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。
3、 虛擬化技術(shù)依賴(lài)物理CPU和內(nèi)存,是硬件級(jí)別的;而docker構(gòu)建在操作系統(tǒng)上,利用操作系統(tǒng)的containerization技術(shù),所以docker甚至可以在虛擬機(jī)上運(yùn)行。
4、虛擬化系統(tǒng)一般都是指操作系統(tǒng)鏡像,比較復(fù)雜,稱(chēng)為“系統(tǒng)”;而docker開(kāi)源而且輕量,稱(chēng)為“容器”,單個(gè)容器適合部署少量應(yīng)用,比如部署一個(gè)redis、一個(gè)memcached。
5、傳統(tǒng)的虛擬化技術(shù)使用快照來(lái)保存狀態(tài);而docker在保存狀態(tài)上不僅更為輕便和低成本,而且引入了類(lèi)似源代碼管理機(jī)制,將容器的快照歷史版本一一記錄,切換成本很低。
6、傳統(tǒng)的虛擬化技術(shù)在構(gòu)建系統(tǒng)的時(shí)候較為復(fù)雜,需要大量的人力;而docker可以通過(guò)Dockfile來(lái)構(gòu)建整個(gè)容器,重啟和構(gòu)建速度很快。更重要的是Dockfile可以手動(dòng)編寫(xiě),這樣應(yīng)用程序開(kāi)發(fā)人員可以通過(guò)發(fā)布Dockfile來(lái)指導(dǎo)系統(tǒng)環(huán)境和依賴(lài),這樣對(duì)于持續(xù)交付十分有利。
7、當(dāng)然KVM對(duì)比于容器也有一個(gè)比較大的優(yōu)勢(shì)就是可以使用不同的操作系統(tǒng)或內(nèi)核。所以,舉例說(shuō),你可以使用微軟Azure,同時(shí)運(yùn)行Windows Server2012的實(shí)例和SUSE Linux企業(yè)級(jí)服務(wù)器的實(shí)例。至于Docker,所有容器都必須使用同樣的操作系統(tǒng)和內(nèi)核。
對(duì)比總結(jié)
特性 |
Docker容器 |
KVM虛擬機(jī) |
啟動(dòng) |
秒級(jí) |
分鐘級(jí) |
硬盤(pán)使用 |
一般為 MB |
一般為 GB |
性能 |
接近原生 |
弱于 |
系統(tǒng)支持量 |
單機(jī)支持上千個(gè)容器 |
一般幾十個(gè) |
推薦學(xué)習(xí):《docker視頻教程》