說起服務(wù)器虛擬化這一議題(當(dāng)然,這也正是本文的討論核心),大家不可避免地會將意見緊緊圍繞在VMware、Hyper-V這一核心身邊,而相對弱勢的Xen與KVM也經(jīng)常會被提及。然而如今一匹黑馬以雷霆萬鈞之勢殺入這一領(lǐng)域,并與眾位傳統(tǒng)巨頭廝殺個不可開交——這就是Docker。
既然說到了Docker,我們自然需要首先從容器技術(shù)入題——這一機(jī)制與原本基于虛擬機(jī)管理程序的服務(wù)器虛擬化方案略有不同。不過將應(yīng)用程序封裝在操作環(huán)境下的單一容器當(dāng)中,確實能夠帶來諸多等同于利用虛擬機(jī)系統(tǒng)載入并運行應(yīng)用程序的優(yōu)勢:二者都能順利由任何適合的物理設(shè)備加以承載,而且其運行完全無需考慮任何依賴性或者其它限制性前提。
當(dāng)然,Docker與VMware解決方案之間的關(guān)鍵性差異在于,Docker是一套基于Linux且使用LXC的系統(tǒng)——所謂LXC是一套用戶空間接口,專門針對Linux內(nèi)核中所包含的功能。
LXC的目標(biāo)在于創(chuàng)建一套盡可能與標(biāo)準(zhǔn)Linux安裝版本相一致的環(huán)境,但卻無需使用獨立的內(nèi)核體系。正如linuxcontainers.org網(wǎng)站上的表述:“LXC通常被視為某種中間點,介于增強(qiáng)性chroot與高成熟度虛擬機(jī)系統(tǒng)之間。”
由于Docker的構(gòu)建立足于LXC之上,因此其只適用于Linux環(huán)境(例如RHEL 7與Ubuntu 14.04服務(wù)器版本)而且只能運行Linux應(yīng)用程序。有鑒于此,大家可以徹底放棄利用其運行Windows系統(tǒng)應(yīng)用或者其它能夠在常見虛擬機(jī)管理程序上順利運行的操作系統(tǒng)應(yīng)用的念頭。
二者之間的另一大關(guān)鍵性差異在于,相較于過去自身充當(dāng)獨立系統(tǒng)的虛擬化方案,Docker容器事實上選擇了Linux內(nèi)核共享的處理方式——該內(nèi)核源自運行在主機(jī)設(shè)備上的單一操作系統(tǒng)。具體而言,運行在同一臺主機(jī)設(shè)備上的多套容器全部共享同一套Linux內(nèi)核。該操作系統(tǒng)中的共享部分處于只讀狀態(tài),但不同容器卻擁有自己的可寫入部分。
進(jìn)一步了解容器機(jī)制的優(yōu)勢所在
那么與經(jīng)過長時間發(fā)展而早已成熟的服務(wù)器虛擬化技術(shù)相比,新近涌現(xiàn)的容器機(jī)制到底擁有哪些優(yōu)勢?面對條件有別的實際情況,我們又應(yīng)該如何在二者之間做出取舍?
容器機(jī)制的核心優(yōu)勢之一在于,用戶可以在一臺主機(jī)設(shè)備上運行更多套容器體系、具體數(shù)量高于虛擬機(jī)系統(tǒng)。其原理相信大家不難理解,由于每套虛擬機(jī)本身就是一個獨立的系統(tǒng),因此需要為其操作系統(tǒng)及虛擬化硬件外加其它特殊功能分配專有資源。如果每套虛擬機(jī)系統(tǒng)的大小為10Gb,那么十套虛擬機(jī)系統(tǒng)的總體積就是10 x 10 = 100Gb——資源總和屬于純粹的累加關(guān)系。
然而如果將十套甚至上百套10Gb容器共同運行,大家也遠(yuǎn)遠(yuǎn)用不上100Gb這樣規(guī)模的資源總和。理由很簡單,所有容器都共享著同樣一部分資源,這就徹底避免了資源重復(fù)分配所帶來的嚴(yán)重浪費。
實際上,所有容器所共享的只有一套操作系統(tǒng)(更嚴(yán)格地講,應(yīng)該是一套系統(tǒng)內(nèi)核)。整套容器體系內(nèi)不存在任何虛擬硬件部分——而只是一點點應(yīng)用程序外加其操作環(huán)境。這就意味著,即使在同一臺主機(jī)之上,大家能夠運行的容器數(shù)量也要遠(yuǎn)遠(yuǎn)超過完整的虛擬機(jī)系統(tǒng)。
采取這種內(nèi)核及其它資源共享的處理方式還能帶來其它附加成效,具體來講,這能讓各容器在不到一秒鐘的時間內(nèi)啟動完畢。相比之下,虛擬機(jī)系統(tǒng)就完全不具備這樣的優(yōu)勢,因為它由開啟到能夠正常運行的過程需要等等整套虛擬系統(tǒng)的啟動、且具體時長往往達(dá)到數(shù)分鐘甚至更多。
Canonical公司(Ubuntu系統(tǒng)贊助商)CEO Mark Shuttleworth則一再重申了這種速度優(yōu)勢所帶來的實際效益。“Canonical公司為用戶提供內(nèi)核及用戶空間起效承諾,保證其能夠支持大家創(chuàng)建出實際效果與虛擬機(jī)相等同的容器體系,而且即使是普通的非root用戶、也能在該系統(tǒng)中獲得與虛擬機(jī)root用戶相媲美的體驗。與KVM相比,不僅速度更快、而且體積更小巧,”他解釋稱。
除此之外,其它優(yōu)勢更是不勝枚舉。舉例來說,大家可以在AWS以及Azure公有云環(huán)境下運行Docker容器,此外容器也更容易進(jìn)行共享。這些特性對于測試及開發(fā)團(tuán)隊而言就顯得尤為重要——同時也是Docker最常被提及、也是最受推崇的潛在優(yōu)勢之一。
容器機(jī)制目前還不足以成為完整服務(wù)器虛擬化方案的替代品
不過VMware及其它虛擬機(jī)方案供應(yīng)商尚不必太過憂慮,因為目前的容器機(jī)制還不足以成為完整服務(wù)器虛擬化方案的替代品——至少就當(dāng)下來看是如此。
這是因為虛擬化領(lǐng)域中充斥著大量極為復(fù)雜的管理基礎(chǔ)設(shè)施,旨在幫助用戶進(jìn)行虛擬機(jī)系統(tǒng)的保存、登錄與運行,外加在不同主機(jī)之間的遷移、創(chuàng)建高可用性集群以及其它類似任務(wù)等等。以VMware的vCenter、微軟的System Center虛擬機(jī)管理器以及其它第三方管理產(chǎn)品為代表的解決方案已經(jīng)在這條道路上浸淫多年并積累下豐富而可靠的實踐經(jīng)驗。
盡管谷歌、紅帽、CoreOS、IBM以及微軟都已經(jīng)開始著手推進(jìn)開源Kubernetes Docker管理系統(tǒng)的發(fā)展與完善,但單就目前來看、Docker還不足以提供可與服務(wù)器虛擬化相抗衡的實際效果。而且我們還無法確定,容器技術(shù)到底能否在短時間內(nèi)迅猛發(fā)展、從而切實滿足企業(yè)用戶對于具體業(yè)務(wù)實施方案的高級需求。
綜上所述,可以看到Docker虛擬化技術(shù)在未來的發(fā)展道路上絕對值得大家認(rèn)真關(guān)注。IT168也將在今后的報道中密切留意其最新動向,并第一時間將最新消息帶給大家。