
近幾年容器?(Container)、Kubernetes等技術(shù)在數據中心、技術(shù)間云計算、虛擬各互聯(lián)網(wǎng)公司的化技業(yè)務(wù)服務(wù)中得到廣泛應用,和20世紀60年代(╯°□°)╯︵ ┻━┻就興起的關(guān)系虛擬機(Virtual Machine,VM)技術(shù)一樣,容器容器也是技術(shù)間一種(′?`*)服務(wù)虛擬化技術(shù)(Server Virtualization),但是虛擬它更加輕量,同時(shí)將焦點(diǎn)從Machine轉移到Application,化技極大提高了開(kāi)發(fā)、關(guān)系測試、容器生產(chǎn)環(huán)境部署的技術(shù)間效率,不過(guò)( ???)其安全性和隔離性比虛擬機稍遜一籌,虛擬在一些場(chǎng)景下也無(wú)法完全替代虛擬機?;?/span>
1 虛擬化技術(shù)分類(lèi)??
在計算機技ヽ(′ー`)ノ術(shù)中,關(guān)系虛擬化 (virtualization) 是一種資源管理技術(shù),是將計算機的各種實(shí)體資源,如(ru)服務(wù)器 、 網(wǎng)絡(luò ) 、 內存及存儲等,予以抽象 、 轉換后呈現出來(lái),打破實(shí)體結構間的不可切割的障礙,使用戶(hù)可以用比(╥_╥)原本的組態(tài)更好的方式來(lái)應用這些資源。因此,虛擬化的核心是對資源的抽象,我們可以在同一個(gè)主機上同時(shí)運行多個(gè)系統或應用,從而提??高系統資源的利用率,實(shí)現降低成本 、 方便管理的(de)目的。虛擬化(′?_?`)技術(shù)有以下這些層次分類(lèi):這里重點(diǎn)說(shuō)明平臺虛擬化技術(shù)。平臺虛擬化分為以下幾種類(lèi)型:(1) 完全虛擬化虛擬機完全模擬完整的底層硬件環(huán)境和特權指令的執行過(guò)程,無(wú)須修改客戶(hù)操作系統。例如 Virtualヾ(?■_■)ノbox、vmware、QEMU 等?!?】Virtualbox:我們可以(yi)在VirtualBox上安裝并且執行Solaris、Windows、DOS、Linux、IBM OS/2 Warp、BSD等系統作為客戶(hù)端操作(′?`*)系統?!?】vmware: vmware 是業(yè)界非常穩定且安全的桌面虛擬機軟件, VMware 虛擬機可讓我們在一臺機器上(′?_?`)同時(shí)運行二個(gè)或更多 Windows 、 DOS 、 LIN(′_`)UX 系統。(◎_◎;)在虛擬網(wǎng)路,實(shí)??時(shí)快照,拖曳共享文件夾,支持 PXE 等方面均有特別( ?ω?)之處,使用 vmware ,我們??可在單一的桌面上同時(shí)運行不同的操作系統,進(jìn)行開(kāi)發(fā) 、 測試 、 部署新的應用程序。預啟動(dòng)執行環(huán)境??(Preboot eXecution Environment,PX??E)也被稱(chēng)為預執行環(huán)境,(′?`)提供了一種使用網(wǎng)絡(luò )接口(Net??work Interf??ace)啟動(dòng)計算(′?_?`)機的機制。這種機制讓計算機的啟動(dòng)可以不依賴(lài)??本┐(′?`)┌地數據存儲設備(如硬盤(pán))或本地已安(╬?益?)裝的操作系統?!?】QEMU:QEMU 本身是一個(gè)非常強大(da)的虛擬機,它可以利用 Xen、KVM 等技術(shù)來(lái)加速。加速之后,就可以把客戶(hù)操作系統的 CPU 指令直接轉發(fā)到物理 CPU,以提升運行效率。(2)硬件輔助虛擬化硬件輔助虛擬化指的是,利用硬件 ( 主要是 CPU ) 來(lái)處理敏感指ˉ\_(ツ)_/ˉ令來(lái)實(shí)現完全虛??擬化的功能,無(wú)須修改客戶(hù)操作系統。例如 VmwareWorkstation , Xen , KVM?!?】Xen :Xen 是一個(gè)開(kāi)放源代碼虛擬機監視器,由劍橋大學(xué)(′?ω?`)開(kāi)發(fā)。它打(da)算在單個(gè)計算機上運行多達100個(gè)滿(mǎn)特征的(′_`)操作系統。操作系統必須進(jìn)行顯式地修改以在Xen上運??行。這使得Xen無(wú)需特殊硬件支持,就能達到高性能的虛擬化?!?】KVM:KVM (全稱(chēng)是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件(jian)平臺上的全功能虛擬化解決方案。 KVM 允許每個(gè)??虛擬機有自己的私有硬件,包括網(wǎng)卡、磁盤(pán)以及圖形適配卡等。(3)半虛擬化 (paravirtualization)部分硬件接口以軟件的形式提供給客戶(hù)機操作系統,需要修改客戶(hù)操作系統,(′?ω?`)例如??早期的 Xen。(4)操作系統級虛擬化內核通過(guò)創(chuàng )建(′_ゝ`)多個(gè)虛擬的操作系統實(shí)例 來(lái)隔離不同的進(jìn)程。Docke??r 容器技術(shù)即在此范疇內。2 比較 Docker 容器技術(shù)與傳統虛擬化技術(shù)Docker 是內核級的虛擬化,因此可以實(shí)現更高的接近原生性能,同時(shí)對資源的額外需??求很低,內存與硬盤(pán)消耗,相對傳統虛擬機方式,少很多;Docker 幾乎可以在任意的平臺上運行,包括物理機 、 虛擬機 、 公有云 、 私有云 、 個(gè)人電腦 、 服務(wù)器等,同時(shí)支持主流(liu)的操作系統發(fā)行版本,所以很容易遷移;啟動(dòng)和停止 Docker 容器可以在秒級實(shí)現,這相比傳統的虛擬機方式快了一個(gè)數量級 ;因為Docker 容器占用很少的系統資源,所以一臺主機上可以同時(shí)運行上千個(gè) Docker 容器 ;傳統虛擬機方式運行 N 個(gè)不同的應用就要啟用 N 個(gè)虛擬機,而每個(gè)虛擬機需要單獨分配獨占的內存 、 硬盤(pán)等資源,對資源的消耗很大,所以一臺主機最多只能運行幾十個(gè)容器,就會(huì )達到性能瓶頸。傳統的虛擬機方式提供了相對封閉的隔離,可以說(shuō)是完全隔離。而 Dockerヽ(′?`)ノ 則利用 Linux 系統上的多種安全防護技(╬?益?)術(shù)來(lái)實(shí)現嚴格的隔離(?????)。除此之外,Docker 還改善并加強了??容器的安全控制和鏡像的安全機制,極大地提高了 Docker 的安全性。歸納如下:特 性 Docker 容器 傳統虛擬機啟動(dòng)速度 秒級 分鐘級性能 接近原生 ˉ\_(ツ)_/ˉ 較差消耗內存 很小 較多硬盤(pán)容量 MB 級 GB 級單機運(′_`)行密度 上千個(gè)容器 幾十個(gè)容器(?????)隔離??性 安全隔離 完全隔離遷移性 &n??bsp; 好 一般傳統虛擬化方式需要有額外的虛擬機管理程序和虛擬機操作??系統 。而Docker 容器是直接在宿主機??操作系統層面上實(shí)現虛擬化,所以屬于輕量級虛擬化方案。