Docker 容器技術(shù)與虛擬化技術(shù)之間的關(guān)系
近幾年容器(Container)、Kubernetes等技術(shù)在數(shù)據(jù)中心、云計(jì)算、各互聯(lián)網(wǎng)公司的業(yè)務(wù)服務(wù)中得到廣泛應(yīng)用,和20世紀(jì)60年代就興起的虛擬機(jī)(Virtual Machine,VM)技術(shù)一樣,容器也是一種服務(wù)虛擬化技術(shù)(Server Virtualization),但是它更加輕量,同時(shí)將焦點(diǎn)從Machine轉(zhuǎn)移到Application,極大提高了開發(fā)、測(cè)試、生產(chǎn)環(huán)境部署的效率,不過其安全性和隔離性比虛擬機(jī)稍遜一籌,在一些場(chǎng)景下也無(wú)法完全替代虛擬機(jī)。
1 虛擬化技術(shù)分類
在計(jì)算機(jī)技術(shù)中,虛擬化 (virtualization) 是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器 、 網(wǎng)絡(luò) 、 內(nèi)存及存儲(chǔ)等,予以抽象 、 轉(zhuǎn)換后呈現(xiàn)出來,打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶可以用比原本的組態(tài)更好的方式來應(yīng)用這些資源。因此,虛擬化的核心是對(duì)資源的抽象,我們可以在同一個(gè)主機(jī)上同時(shí)運(yùn)行多個(gè)系統(tǒng)或應(yīng)用,從而提高系統(tǒng)資源的利用率,實(shí)現(xiàn)降低成本 、 方便管理的目的。虛擬化技術(shù)有以下這些層次分類:
這里重點(diǎn)說明平臺(tái)虛擬化技術(shù)。平臺(tái)虛擬化分為以下幾種類型:
(1) 完全虛擬化
虛擬機(jī)完全模擬完整的底層硬件環(huán)境和特權(quán)指令的執(zhí)行過程,無(wú)須修改客戶操作系統(tǒng)。例如 Virtualbox、vmware、QEMU 等。
【1】Virtualbox:我們可以在VirtualBox上安裝并且執(zhí)行Solaris、Windows、DOS、Linux、IBM OS/2 Warp、BSD等系統(tǒng)作為客戶端操作系統(tǒng)。
【2】vmware: vmware 是業(yè)界非常穩(wěn)定且安全的桌面虛擬機(jī)軟件, VMware 虛擬機(jī)可讓我們?cè)谝慌_(tái)機(jī)器上同時(shí)運(yùn)行二個(gè)或更多 Windows 、 DOS 、 LINUX 系統(tǒng)。在虛擬網(wǎng)路,實(shí)時(shí)快照,拖曳共享文件夾,支持 PXE 等方面均有特別之處,使用 vmware ,我們可在單一的桌面上同時(shí)運(yùn)行不同的操作系統(tǒng),進(jìn)行開發(fā) 、 測(cè)試 、 部署新的應(yīng)用程序。
預(yù)啟動(dòng)執(zhí)行環(huán)境(Preboot eXecution Environment,PXE)也被稱為預(yù)執(zhí)行環(huán)境,提供了一種使用網(wǎng)絡(luò)接口(Network Interface)啟動(dòng)計(jì)算機(jī)的機(jī)制。這種機(jī)制讓計(jì)算機(jī)的啟動(dòng)可以不依賴本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備(如硬盤)或本地已安裝的操作系統(tǒng)。
【3】QEMU:QEMU 本身是一個(gè)非常強(qiáng)大的虛擬機(jī),它可以利用 Xen、KVM 等技術(shù)來加速。加速之后,就可以把客戶操作系統(tǒng)的 CPU 指令直接轉(zhuǎn)發(fā)到物理 CPU,以提升運(yùn)行效率。
(2)硬件輔助虛擬化
硬件輔助虛擬化指的是,利用硬件 ( 主要是 CPU ) 來處理敏感指令來實(shí)現(xiàn)完全虛擬化的功能,無(wú)須修改客戶操作系統(tǒng)。例如 VmwareWorkstation , Xen , KVM。
【1】Xen :Xen 是一個(gè)開放源代碼虛擬機(jī)監(jiān)視器,由劍橋大學(xué)開發(fā)。它打算在單個(gè)計(jì)算機(jī)上運(yùn)行多達(dá)100個(gè)滿特征的操作系統(tǒng)。操作系統(tǒng)必須進(jìn)行顯式地修改以在Xen上運(yùn)行。這使得Xen無(wú)需特殊硬件支持,就能達(dá)到高性能的虛擬化。
【2】KVM:KVM (全稱是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平臺(tái)上的全功能虛擬化解決方案。 KVM 允許每個(gè)虛擬機(jī)有自己的私有硬件,包括網(wǎng)卡、磁盤以及圖形適配卡等。
(3)半虛擬化 (paravirtualization)
部分硬件接口以軟件的形式提供給客戶機(jī)操作系統(tǒng),需要修改客戶操作系統(tǒng),例如早期的 Xen。
(4)操作系統(tǒng)級(jí)虛擬化
內(nèi)核通過創(chuàng)建多個(gè)虛擬的操作系統(tǒng)實(shí)例 來隔離不同的進(jìn)程。Docker 容器技術(shù)即在此范疇內(nèi)。
2 比較 Docker 容器技術(shù)與傳統(tǒng)虛擬化技術(shù)
Docker 是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的接近原生性能,同時(shí)對(duì)資源的額外需求很低,內(nèi)存與硬盤消耗,相對(duì)傳統(tǒng)虛擬機(jī)方式,少很多;
Docker 幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī) 、 虛擬機(jī) 、 公有云 、 私有云 、 個(gè)人電腦 、 服務(wù)器等,同時(shí)支持主流的操作系統(tǒng)發(fā)行版本,所以很容易遷移;
啟動(dòng)和停止 Docker 容器可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式快了一個(gè)數(shù)量級(jí) ;
因?yàn)镈ocker 容器占用很少的系統(tǒng)資源,所以一臺(tái)主機(jī)上可以同時(shí)運(yùn)行上千個(gè) Docker 容器 ;傳統(tǒng)虛擬機(jī)方式運(yùn)行 N 個(gè)不同的應(yīng)用就要啟用 N 個(gè)虛擬機(jī),而每個(gè)虛擬機(jī)需要單獨(dú)分配獨(dú)占的內(nèi)存 、 硬盤等資源,對(duì)資源的消耗很大,所以一臺(tái)主機(jī)最多只能運(yùn)行幾十個(gè)容器,就會(huì)達(dá)到性能瓶頸。
傳統(tǒng)的虛擬機(jī)方式提供了相對(duì)封閉的隔離,可以說是完全隔離。而 Docker 則利用 Linux 系統(tǒng)上的多種安全防護(hù)技術(shù)來實(shí)現(xiàn)嚴(yán)格的隔離。除此之外,Docker 還改善并加強(qiáng)了容器的安全控制和鏡像的安全機(jī)制,極大地提高了 Docker 的安全性。
歸納如下:
特 性 Docker 容器 傳統(tǒng)虛擬機(jī)
啟動(dòng)速度 秒級(jí) 分鐘級(jí)
性能 接近原生 較差
消耗內(nèi)存 很小 較多
硬盤容量 MB 級(jí) GB 級(jí)
單機(jī)運(yùn)行密度 上千個(gè)容器 幾十個(gè)容器
隔離性 安全隔離 完全隔離
遷移性 好 一般
傳統(tǒng)虛擬化方式需要有額外的虛擬機(jī)管理程序和虛擬機(jī)操作系統(tǒng) 。而Docker 容器是直接在宿主機(jī)操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,所以屬于輕量級(jí)虛擬化方案。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科