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

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

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