docker與虛擬機(jī)的區(qū)別:1、docker啟動(dòng)快速屬于秒級(jí)別,而虛擬機(jī)通常需要幾分鐘去啟動(dòng);2、性能損耗不同,docker需要的資源更少;3、隔離性不同,docker屬于進(jìn)程之間的隔離,隔離性較弱,而虛擬機(jī)可以實(shí)現(xiàn)系統(tǒng)級(jí)別的隔離。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
docker與虛擬機(jī)的區(qū)別是什么
虛擬機(jī):虛擬機(jī)是通過Hypervisor(虛擬機(jī)管理系統(tǒng),常見的有VMWare workstation、VirtualBox),虛擬出網(wǎng)卡、cpu、內(nèi)存等虛擬硬件,再在其上建立虛擬機(jī),每個(gè)虛擬機(jī)是個(gè)獨(dú)立的操作系統(tǒng),擁有自己的系統(tǒng)內(nèi)核。
容器:容器是利用Namespace將文件系統(tǒng)、進(jìn)程、網(wǎng)絡(luò)、設(shè)備等資源進(jìn)行隔離,利用cgroup對(duì)權(quán)限、cpu資源進(jìn)行限制,最終讓容器之間互不影響,容器無法影響宿主機(jī)。
docker的優(yōu)勢(shì)
運(yùn)行在容器上的docker的程序,直接使用的都是宿主機(jī)的硬件資源,因此在cpu、內(nèi)存、利用率上,Docker將會(huì)在效率上具有更大的優(yōu)勢(shì)
Docker直接利用宿主機(jī)的系統(tǒng)內(nèi)核,避免了虛擬機(jī)啟動(dòng)時(shí)所需要的系統(tǒng)引導(dǎo)時(shí)間和操作系統(tǒng)運(yùn)行的資源消耗,利用Docker能夠在幾秒鐘之內(nèi)啟動(dòng)大量的容器,是虛擬機(jī)無法辦到的。快速啟動(dòng)低資源消耗的優(yōu)點(diǎn),使Docker在彈性云平臺(tái)自動(dòng)運(yùn)維系統(tǒng)方面具有很好的應(yīng)用場(chǎng)景。
容器的啟動(dòng)時(shí)間是秒級(jí)的,大量節(jié)約開發(fā)、測(cè)試、部署的時(shí)間。還有一個(gè)非常關(guān)鍵的點(diǎn),就是Docker能夠高效地部署和擴(kuò)容,Docker容器幾乎可以在任意平臺(tái)上運(yùn)行,包括虛擬機(jī)、物理機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等,這種兼容性,可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)平臺(tái)。
但是,虛擬機(jī)的安全性比容器好一些,docker與宿主機(jī)共享內(nèi)核、文件系統(tǒng)等資源,更有可能對(duì)其他容器、宿主機(jī)造成影響。
區(qū)別
1、啟動(dòng)速度不同
docker 啟動(dòng)快速屬于秒級(jí)別。虛擬機(jī)通常需要幾分鐘去啟動(dòng)。
2、性能損耗不同
docker 需要的資源更少,docker 在操作系統(tǒng)級(jí)別進(jìn)行虛擬化,docker 容器和內(nèi)核交互,幾乎沒有性能損耗,性能優(yōu)于通過 Hypervisor 層與內(nèi)核層的虛擬化。
3、系統(tǒng)利用率不同
docker 更輕量,docker 的架構(gòu)可以共用一個(gè)內(nèi)核與共享應(yīng)用程序庫,所占內(nèi)存極小。同樣的硬件環(huán)境,Docker 運(yùn)行的鏡像數(shù)遠(yuǎn)多于虛擬機(jī)數(shù)量,對(duì)系統(tǒng)的利用率非常高。
4、隔離性不同
與虛擬機(jī)相比,docker 隔離性更弱,docker 屬于進(jìn)程之間的隔離,虛擬機(jī)可實(shí)現(xiàn)系統(tǒng)級(jí)別隔離。
5、安全性不同
docker 的安全性也更弱。Docker 的租戶 root 和宿主機(jī) root 等同,一旦容器內(nèi)的用戶從普通用戶權(quán)限提升為 root 權(quán)限,它就直接具備了宿主機(jī)的 root 權(quán)限,進(jìn)而可進(jìn)行無限制的操作。虛擬機(jī)租戶 root 權(quán)限和宿主機(jī)的 root 虛擬機(jī)權(quán)限是分離的,并且虛擬機(jī)利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔離技術(shù),這種隔離技術(shù)可以防止虛擬機(jī)突破和彼此交互,而容器至今還沒有任何形式的硬件隔離,這使得容器容易受到攻擊。
6、可管理性不同
docker 的集中化管理工具還不算成熟。各種虛擬化技術(shù)都有成熟的管理工具,例如 VMware vCenter 提供完備的虛擬機(jī)管理能力。
7、可用和可恢復(fù)性不同
docker 對(duì)業(yè)務(wù)的高可用支持是通過快速重新部署實(shí)現(xiàn)的。虛擬化具備負(fù)載均衡,高可用,容錯(cuò),遷移和數(shù)據(jù)保護(hù)等經(jīng)過生產(chǎn)實(shí)踐檢驗(yàn)的成熟保障機(jī)制,VMware 可承諾虛擬機(jī) 99.999% 高可用,保證業(yè)務(wù)連續(xù)性。
8、創(chuàng)建、刪除速度不同
虛擬化創(chuàng)建是分鐘級(jí)別的,Docker 容器創(chuàng)建是秒級(jí)別的,Docker 的快速迭代性,決定了無論是開發(fā)、測(cè)試、部署都可以節(jié)約大量時(shí)間。
9、交付、部署速度不同
虛擬機(jī)可以通過鏡像實(shí)現(xiàn)環(huán)境交付的一致性,但鏡像分發(fā)無法體系化;Docker 在 Dockerfile 中記錄了容器構(gòu)建過程,可在集群中實(shí)現(xiàn)快速分發(fā)和快速部署;
推薦學(xué)習(xí):《docker視頻教程》