淺談 Docker 優劣:誰是虛擬化黑馬?
說起伺服器虛擬化這一個議題(當然,這也正是本文的討論核心),大家無可避免地會將意見圍繞在VMware、Hyper-V這些常見的方案之上,而相對弱勢的XenKVM也經常會被提及。然而如今有一匹黑馬來勢洶洶殺入這一個領域,並與眾位傳統巨頭廝殺——這就是Docker。(有關 Docker 大家可參考我們早前的教學)
既然說到了Docker,我們自然需要從Containers的技術開始;這一種機制與基於虛擬機管理程序的伺服器虛擬化方案略有不同。不過將應用程序Encapsulation並用於系統環境下的單一 Container 中,確實能夠帶來許多優勢:例如能由任何合適的設備之中使用,而且亦無需考慮任何依賴性或者其它限制問題。
當然,Docker VMware 方案之間的分別在於 Docker 是一套基於 Linux 且使用 LXC 系統的方案。所謂 LXC 是一套專門針對 Linux 核心功能的方案,LXC 的目標在於建立一套與標准 Linux 安裝版本相似甚至一致的環境,但卻無需使用獨立的核心系統。正如 linuxcontainers.org 網站上的簡介:LXC 通常被視為某種中間點,介乎於強性代版的 chroot 以及虛擬系統之間。
由於 Docker 的構思立足於 LXC 之上,因此它只適用於 Linux 環境(例如 Red Hat Enterprise Linux 7、Ubuntu 14.04 伺服器等等)而且只能運行 Linux 應用。有鑒於此,大家可以徹底放棄利用它來運行 Windows 應用或者在常見虛擬機管理程序上運行的操作系統念頭了。
兩者之間的另一大差異在於,過去被視為獨立系統的虛擬化方案,Docker 的 Container 事實上選擇了 Linux 核心共享的處理方式——該核心源於運行在主機設備上的單一操作系統。具體而言,運行在同一台主機設備上的多套 Container 全部能共享同一套 Linux 核心。該操作系統中的共享部分處於唯讀狀態,但不同 Container 可擁有自己的可寫入部分。
進一步了解 Container 機制的優勢所在
與經過長時間發展而且早已成熟的伺服器虛擬化技術相比,最近出現的 Container 機制到底擁有哪些優勢?面對條件有別的實際情況,我們又應該如何在兩者之間作出取捨?
Container 機制的核心優勢在於,用戶可以在一台主機設備上運行多套 Container 系統、具體數量高於虛擬機系統。當中的原理相信大家不難理解,由於每套虛擬機本身就是一個獨立的系統,因此需要為其操作系統及虛擬化硬件另外加入一些特殊功能來分配專有資源。如果每套虛擬機系統的大小為 10Gb,那麼十套虛擬機系統的總儲存量就是 10 x 10 = 100Gb——資源總和純粹屬於累加關系。
然而如果將十套甚至上百套 10Gb Container 共同運行,大家也遠遠用不上 100Gb 的資源總和。理由很簡單,所有 Container 都共享著同樣部分的資源,這就能徹底避免資源重覆分配所帶來的嚴重浪費情況。
實際上,所有 Container 共享的只有一套操作系統(更嚴格地說,應該是一套核心系統)。整套 Container 系統內不存在任何虛擬硬件部分——只是一點點應用程序另外加上操作環境。這就意味著,即使在同一台主機之上,大家能夠運行的 Container 數量也要遠遠超過完整的虛擬機系統。
採取這種核心及其它資源共享的處理方式還能帶來其它附加成效,具體來說,這能讓各個 Container 在不到一秒時間內完成啟動。相比下,虛擬機系統就完全不具備這樣的優勢,因為它由開啟到能夠正常運行的過程需要等待整套虛擬系統啟動、且具體時間往往達到數分鐘甚至更久。
除此之外,其它優勢更是令人驚喜萬分。舉例說,大家可以在 AWS 以及 Azure 公有雲的環境下運行 DockerContainer,此外 Container 也更容易進行共享。這些特性對於測試及開發團隊而言就顯得更為重要——同時也是 Docker 最常被提及、也是最受推崇的潛在優勢之一。
Container 機制目前還不足以成為完整伺服器虛擬化方案的替代品
不過 VMware 及其它虛擬機方案供應商尚不必太過憂慮,因為目前的 Container 機制還不足以成為完整伺服器虛擬化方案的替代品——至少就目前情況而言就是如此。
這是因為虛擬化範疇中充斥著大量極為復雜的管理基礎設施,只在幫助用戶進行虛擬機系統的保存、登錄與運行;同時 Docker 最缺乏的例如在不同主機之間的遷移、建立高可用性的 Computer Cluster 以及其他類似任務等都欠缺。以 VMware 的 vCenter、微軟的 System Center 虛擬機管理器以及其他第三方管理產品為代表的解決方案已經在這方面累積了多年豐富又可靠的實踐經驗。
儘管 Google、Red Hat、CoreOS、IBM 以及微軟都開始著手推進開源 Kubernetes Docker 管理系統的發展,但單單就目前情況來看、Docker 還是不足以提供可與伺服器虛擬化抗行的實際效果。而且我們還無法確定,Container 技術到底能否在短時間內迅速發展、從而能滿足企業用戶對於落實具體業務的要求。
綜合而言,可以看到 Docker 虛擬化技術在未來的發展絕對值得大家關注。
相關文章:
顛覆 VM 玩法:Docker 或動搖傳統虛擬化?
顛覆 VM 玩法:幾步極速完成安裝無難度
50% 簡化!活用 Docker、5 分鐘極速安裝 LAMP
小心暗藏惡意軟件:淺談 Docker 安全性
節省麻煩設定:尋找 Docker 專用的寄存服務
淺談 Docker 優劣:誰是虛擬化黑馬?
1 Response
[…] 0 comments […]