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