就在去年的10月份,大家似乎都鐘愛(ài)Docker。你要是以為Docker就是容器領(lǐng)域的唯一玩家,那也情有可原。
Docker本身其實(shí)只是在2014年下半年才備受關(guān)注,Docker 1.0在之前的6月份首次亮相。但在6月份到10月份這短短幾個(gè)月的時(shí)間里,Docker人氣一路飆升,紅帽在新的RHEL 7版本中增添了支持Docker的功能,IBM公開(kāi)擁抱Docker和容器,亞馬遜推出了EC2容器服務(wù),連公認(rèn)的競(jìng)爭(zhēng)對(duì)手VMware也在當(dāng)年8月宣布支持Docker。
雖然Docker和容器化目前還無(wú)法代替完全成熟的服務(wù)器虛擬化,尤其是在管理基礎(chǔ)設(shè)施方面,但像Kubernetes Docker管理系統(tǒng)這些開(kāi)源選擇方案還是讓人看到了希望:容器技術(shù)有望在將來(lái)滿(mǎn)足企業(yè)的更高級(jí)要求。
容器競(jìng)爭(zhēng)白熱化
但是雖然2014年下半年支持Docker及容器化的聲勢(shì)越來(lái)越大,但現(xiàn)在Docker的處境也未必是人見(jiàn)人愛(ài)。很快就會(huì)有許多競(jìng)爭(zhēng)對(duì)手挑戰(zhàn)Docker在容器領(lǐng)域一家獨(dú)大的霸主地位,與之一較高下。
我們?cè)谡務(wù)撜l(shuí)呢?首先是CoreOS,這種開(kāi)源輕型操作系統(tǒng)基于Linux內(nèi)核,是為了給部署的集群系統(tǒng)提供基礎(chǔ)設(shè)施而設(shè)計(jì)的。CoreOS的老板Alex Polvi對(duì)于Docker技術(shù)邁進(jìn)的方向似乎一點(diǎn)也不滿(mǎn)意。
他在一篇博文中說(shuō):“Docker在2013年初首次展示在我們面前時(shí),‘標(biāo)準(zhǔn)容器’這個(gè)想法惹人注目,立即引起了人們的注意。”
Polvi繼續(xù)說(shuō):“可遺憾的是,一種簡(jiǎn)單的可重復(fù)使用的組件影響不了整個(gè)系統(tǒng)的運(yùn)作方式。Docker現(xiàn)在在開(kāi)發(fā)啟動(dòng)云服務(wù)器的工具、用于集群的系統(tǒng)以及一系列廣泛的功能,比如構(gòu)建映像、運(yùn)行映像、上傳、下載及最終甚至覆蓋網(wǎng)絡(luò),它們都編譯成一個(gè)整體的二進(jìn)制代碼,在你的服務(wù)器上主要作為root來(lái)運(yùn)行。”
他補(bǔ)充說(shuō),從安全和可組合性的角度來(lái)看,他認(rèn)為,Docker的流程模型存在根本性的缺陷,因?yàn)橐磺卸际峭ㄟ^(guò)集中式守護(hù)程序來(lái)運(yùn)行的。
隨后Polvi直指問(wèn)題的核心:“我們應(yīng)該不要再談?wù)撌裁碊ocker容器,而是開(kāi)始談?wù)揇ocker平臺(tái)。Docker容器沒(méi)有成為我們之前設(shè)想的那個(gè)簡(jiǎn)單的可組合的構(gòu)建模塊。我們?nèi)孕欧頓ocker當(dāng)初提出的容器的最初前提,所以我們?cè)趯?duì)此做一番工作。”
Rocket,一種新的容器運(yùn)行時(shí)環(huán)境
他在這方面所做的工作就是,構(gòu)建一種新的容器運(yùn)行時(shí)環(huán)境,名為Rocket,以此替代Docker運(yùn)行時(shí)環(huán)境。他表示,它在設(shè)計(jì)時(shí)就著眼于可組合性、安全性和速度。原型已經(jīng)在Github上發(fā)布。
Docker首席執(zhí)行官Ben Golub很快對(duì)CoreOS宣布Rocket作出了回應(yīng)。雖然希望能探討Rocket項(xiàng)目提出的一些技術(shù)觀點(diǎn),他還是采用了頗具外交辭令的說(shuō)法:
“雖然我們并不同意一些觀點(diǎn)以及選擇宣布Rocket的時(shí)機(jī)(就在阿姆斯特丹召開(kāi)DockerCon大會(huì)的前夕),我們還是希望我們都能繼續(xù)以什么對(duì)用戶(hù)和開(kāi)發(fā)人員最有利作為開(kāi)發(fā)產(chǎn)品的指導(dǎo)方針。”
而Rocket不是Docker的唯一替代容器。這個(gè)領(lǐng)域還有多得多的競(jìng)爭(zhēng)對(duì)手。
微軟通過(guò)Drawbridge支持Docker容器
微軟已經(jīng)宣布,它將在其Azure基礎(chǔ)設(shè)施即服務(wù)(IaaS)系統(tǒng)中支持Docker容器;等自己的平臺(tái)即服務(wù)(PaaS)支持Linux后,可能還會(huì)在其PaaS上支持Docker。微軟還在致力于開(kāi)發(fā)自己的容器技術(shù),眼下這項(xiàng)技術(shù)名為Drawbridge。該容器技術(shù)可能會(huì)在不遠(yuǎn)將來(lái)的某個(gè)時(shí)候出現(xiàn)在Windows Server和Azure中。的確,Azure的首席技術(shù)官M(fèi)ark Russinovich已證實(shí),公司已經(jīng)在內(nèi)部使用Drawbridge。
另外還有Spoon提供的另一種Windows可能。微軟解釋?zhuān)?ldquo;Spoon讓你可以將應(yīng)用程序及其依賴(lài)項(xiàng)包裝到一種名為容器的輕型、隔離的虛擬環(huán)境。隨后,容器化應(yīng)用程序可以在安裝有Spoon的任何Windows機(jī)器上運(yùn)行,不管底層基礎(chǔ)設(shè)施怎樣。這就消除了安裝、沖突、故障和缺失的依賴(lài)項(xiàng)。”
Spoon容器建立在Spoon虛擬機(jī)的基礎(chǔ)上,而Spoon虛擬機(jī)是一種應(yīng)用程序虛擬化引擎,它為操作系統(tǒng)的諸多核心對(duì)象提供了輕型名稱(chēng)空間隔離機(jī)制,比如文件系統(tǒng)、注冊(cè)表、進(jìn)程、網(wǎng)絡(luò)和線(xiàn)程子系統(tǒng)等對(duì)象。
Canonical發(fā)布自己的容器系統(tǒng)
另外還有不甘落后的Canonical,該公司已宣布了自己的容器系統(tǒng),名為L(zhǎng)XD,面向其Ubuntu Linux發(fā)行版。該公司表示,LXD還將與OpenStack集成起來(lái)。(Docker建立在Linux容器即LXC上,LXD的名稱(chēng)由此而來(lái)。)
Canonical這樣解釋其新項(xiàng)目:“LXC將是客戶(hù)端,LXD將是服務(wù)器。開(kāi)發(fā)人員如今之所以喜歡LXC,是因?yàn)樗鼮樗麄兲峁┝藥缀跫磿r(shí)的輕型容器,他們因此可以在里面運(yùn)行一系列廣泛的Linux操作環(huán)境。在將來(lái),開(kāi)發(fā)人員可以在想要?jiǎng)?chuàng)建并拆除這些環(huán)境的所有機(jī)器上運(yùn)行LXD,并且從網(wǎng)絡(luò)上任何地方,使用LXC來(lái)驅(qū)動(dòng)這個(gè)過(guò)程。”
另外請(qǐng)別忘了Flockport,它大力支持LXC用于容器化。Flockport這樣解釋?zhuān)?ldquo;LXC是一項(xiàng)為用戶(hù)提供輕型Linux容器的容器技術(shù),而Docker是一種基于容器的單一應(yīng)用程序虛擬化引擎。它們聽(tīng)起來(lái)似乎相似,但其實(shí)全然不同。”
容器領(lǐng)域的整個(gè)形勢(shì)讓人不由地聯(lián)想到了五六年前的服務(wù)器虛擬化領(lǐng)域。Docker在2014年大受歡迎,在2015年勢(shì)必會(huì)迎來(lái)更迅猛的發(fā)展,進(jìn)一步成熟起來(lái),但是Docker肯定不會(huì)是未來(lái)容器領(lǐng)域的唯一玩家。
一旦市面上出現(xiàn)了某種優(yōu)秀的技術(shù),大家都想?yún)⑴c其中,包括微軟,微軟早晚會(huì)介入。而如果這意味著選擇、甚至競(jìng)爭(zhēng),那么自然是多多益善。
本文來(lái)源:51CTO 布加迪編譯