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