1 虛擬化技術(shù)分類(lèi)
在計(jì)算機(jī)技術(shù)中,虛擬化 (virtualization) 是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器 、 網(wǎng)絡(luò) 、 內(nèi)存及存儲(chǔ)等,予以抽象 、 轉(zhuǎn)換后呈現(xiàn)出來(lái),打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶(hù)可以用比原本的組態(tài)更好的方式來(lái)應(yīng)用這些資源。因此,虛擬化的核心是對(duì)資源的抽象,我們可以在同一個(gè)主機(jī)上同時(shí)運(yùn)行多個(gè)系統(tǒng)或應(yīng)用,從而提高系統(tǒng)資源的利用率,實(shí)現(xiàn)降低成本 、 方便管理的目的。
虛擬化技術(shù)有以下這些層次分類(lèi):

這里重點(diǎn)說(shuō)明平臺(tái)虛擬化技術(shù)。平臺(tái)虛擬化分為以下幾種類(lèi)型:
(1) 完全虛擬化
虛擬機(jī)完全模擬完整的底層硬件環(huán)境和特權(quán)指令的執(zhí)行過(guò)程,無(wú)須修改客戶(hù)操作系統(tǒng)。例如 Virtualbox、vmware、QEMU 等。
【1】Virtualbox:我們可以在VirtualBox上安裝并且執(zhí)行Solaris、Windows、DOS、Linux、IBM OS/2 Warp、BSD等系統(tǒng)作為客戶(hù)端操作系統(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)行開(kāi)發(fā) 、 測(cè)試 、 部署新的應(yīng)用程序。
預(yù)啟動(dòng)執(zhí)行環(huán)境(Preboot eXecution Environment,PXE)也被稱(chēng)為預(yù)執(zhí)行環(huán)境,提供了一種使用網(wǎng)絡(luò)接口(Network Interface)啟動(dòng)計(jì)算機(jī)的機(jī)制。這種機(jī)制讓計(jì)算機(jī)的啟動(dòng)可以不依賴(lài)本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備(如硬盤(pán))或本地已安裝的操作系統(tǒng)。
【3】QEMU:QEMU 本身是一個(gè)非常強(qiáng)大的虛擬機(jī),它可以利用 Xen、KVM 等技術(shù)來(lái)加速。加速之后,就可以把客戶(hù)操作系統(tǒng)的 CPU 指令直接轉(zhuǎn)發(fā)到物理 CPU,以提升運(yùn)行效率。
(2)硬件輔助虛擬化
硬件輔助虛擬化指的是,利用硬件 ( 主要是 CPU ) 來(lái)處理敏感指令來(lái)實(shí)現(xiàn)完全虛擬化的功能,無(wú)須修改客戶(hù)操作系統(tǒng)。例如 VmwareWorkstation , Xen , KVM。
【1】Xen :Xen 是一個(gè)開(kāi)放源代碼虛擬機(jī)監(jiān)視器,由劍橋大學(xué)開(kāi)發(fā)。它打算在單個(gè)計(jì)算機(jī)上運(yùn)行多達(dá)100個(gè)滿(mǎn)特征的操作系統(tǒng)。操作系統(tǒng)必須進(jìn)行顯式地修改以在Xen上運(yùn)行。這使得Xen無(wú)需特殊硬件支持,就能達(dá)到高性能的虛擬化。
【2】KVM:KVM (全稱(chēng)是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平臺(tái)上的全功能虛擬化解決方案。 KVM 允許每個(gè)虛擬機(jī)有自己的私有硬件,包括網(wǎng)卡、磁盤(pán)以及圖形適配卡等。
(3)半虛擬化 (paravirtualization)
部分硬件接口以軟件的形式提供給客戶(hù)機(jī)操作系統(tǒng),需要修改客戶(hù)操作系統(tǒng),例如早期的 Xen。
(4)操作系統(tǒng)級(jí)虛擬化
內(nèi)核通過(guò)創(chuàng)建多個(gè)虛擬的操作系統(tǒng)實(shí)例 來(lái)隔離不同的進(jìn)程。Docker 容器技術(shù)即在此范疇內(nèi)。
2 比較 Docker 容器技術(shù)與傳統(tǒng)虛擬化技術(shù)
- Docker 是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的接近原生性能,同時(shí)對(duì)資源的額外需求很低,內(nèi)存與硬盤(pán)消耗,相對(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)存 、 硬盤(pán)等資源,對(duì)資源的消耗很大,所以一臺(tái)主機(jī)最多只能運(yùn)行幾十個(gè)容器,就會(huì)達(dá)到性能瓶頸。
- 傳統(tǒng)的虛擬機(jī)方式提供了相對(duì)封閉的隔離,可以說(shuō)是完全隔離。而 Docker 則利用 Linux 系統(tǒng)上的多種安全防護(hù)技術(shù)來(lái)實(shí)現(xiàn)嚴(yán)格的隔離。除此之外,Docker 還改善并加強(qiáng)了容器的安全控制和鏡像的安全機(jī)制,極大地提高了 Docker 的安全性。
歸納如下:
| 特性 | Docker 容器 | 傳統(tǒng)虛擬機(jī) |
|---|---|---|
| 啟動(dòng)速度 | 秒級(jí) | 分鐘級(jí) |
| 性能 | 接近原生 | 較差 |
| 消耗內(nèi)存 | 很小 | 較多 |
| 硬盤(pán)容量 | MB 級(jí) | GB 級(jí) |
| 單機(jī)運(yùn)行密度 | 上千個(gè)容器 | 幾十個(gè)容器 |
| 隔離性 | 安全隔離 | 完全隔離 |
| 遷移性 | 好 | 一般 |

從上圖中可以看出,傳統(tǒng)虛擬化方式需要有額外的虛擬機(jī)管理程序和虛擬機(jī)操作系統(tǒng) 。而Docker 容器是直接在宿主機(jī)操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,所以屬于輕量級(jí)虛擬化方案。
擁有這么多優(yōu)秀的特性,你說(shuō) Token 容器技術(shù)能不流行嗎?