在2014年接近尾聲時(shí),CoreOS在Docker發(fā)布了Rocket,聲稱Docker的流程模型有著“根本性的缺陷”。雖然CoreOS的創(chuàng)始人Alex Polvi盡量緩和語氣,但是他堅(jiān)持自己的基本觀點(diǎn),Docker不再是構(gòu)建系統(tǒng)的最佳組件。
容器技術(shù)最近異軍突起,所以很容易看出為什么Polvi這么積極地跑馬圈地。因?yàn)槿萜髦疇?zhēng)才剛剛開始,不過,更嚴(yán)重的問題是供應(yīng)商之間這樣來回的爭(zhēng)吵是否會(huì)嚇跑那些想要采用容器技術(shù)的企業(yè),至少讓他們等到爭(zhēng)論塵埃落定時(shí)。
平臺(tái) vs. 組件
CoreOS的Plovi和Docker的創(chuàng)始人Solomon Hykes在一點(diǎn)上有著共識(shí):Rocket和Docker實(shí)際上不是競(jìng)爭(zhēng)關(guān)系。Hykes說,Rocket“實(shí)際上是libcontainer的競(jìng)爭(zhēng)對(duì)手”,而不是整體Docker平臺(tái)的競(jìng)爭(zhēng)對(duì)手。Libcontainer,是“為容器制定配置選項(xiàng)”的庫(kù),它對(duì)于Docker至關(guān)重要,它也是社區(qū)的努力結(jié)果,能幫助定義容器的未來。
正如InforWorld的Serdar Yegulap所寫,Libcontainer非常重要。
但是Plovi顯然覺得Docker忽略了它自己的核心愿望而想去做更多 – 成為平臺(tái)。
Polvi 說:
"Docker一開始是用來構(gòu)建平臺(tái)的組件。一個(gè)構(gòu)建模塊。一個(gè)可以集成到現(xiàn)有系統(tǒng)使其可以使用容器的東西。這是Docker的最初價(jià)值,幫助構(gòu)建東西的簡(jiǎn)單工具,這也是我覺得Docker能在今天這么成功的原因。"
這在有些方面這有點(diǎn)像“我們想回到過去的黃金年代”,但是Plovi堅(jiān)持這不是反Docker,而是希望Docker繼續(xù)作為一個(gè)開放組件來幫助構(gòu)建其他系統(tǒng):
Docker[現(xiàn)在]本身就是一個(gè)平臺(tái),不是構(gòu)建模塊。這是壞事嗎?不,它只不過不再是構(gòu)建系統(tǒng)的最佳組件。包括我們的系統(tǒng),在這上面我們想要使用容器來構(gòu)建OS。
我們認(rèn)為還需要這樣的組件存在,讓其他系統(tǒng)能與之集成。我們認(rèn)為Docker的初衷仍然是正確的,因此我們想確保它繼續(xù)存在。這就是我們開發(fā)Rocket的原因。
然而,問題是在某些方面,當(dāng)想要構(gòu)建業(yè)務(wù)時(shí),Docker可能有意或無意地使得在其上構(gòu)建其他業(yè)務(wù)變得困難。Polvi繼續(xù)說:
"Docker平臺(tái)和Rocket是完全不同的東西。Docker平臺(tái)是一個(gè)產(chǎn)品。Rocket是一個(gè)組件。公司可能會(huì)選擇Docker平臺(tái)替代 [Pivotal的]Cloud Foundry。而像Cloud Foundry這樣的公司卻會(huì)使用類似Rocket這樣的組件來構(gòu)建Cloud Foundry。"
不管你的公司是需要Docker還是Rocket(或者其他容器技術(shù)),最終都是要構(gòu)建出想要構(gòu)建的東西。但是公司可以用Docker,平臺(tái),加上libcontainer作為Polvi的可組合組件嗎?
絕對(duì)有可能。這正是讓人困惑的地方。
Rocket有存在的必要嗎?
開源世界經(jīng)常會(huì)開發(fā)出一些沒有實(shí)際價(jià)值的東西。有時(shí)候有些東西之后會(huì)變得有價(jià)值,但更多的時(shí)候卻沒有。
Docker替代了Linux 內(nèi)核的LXC,這種容器技術(shù)已經(jīng)存在了好多年。但是Pivotal的Andrew Clay Shafer指出,“Docker解決了[LXC的]可用性問題,使得這種技術(shù)可以被使用。”
同樣,CoreOS極大得改進(jìn)了Docker。Pivotal的Cloud Foundry的執(zhí)行官James Watters說,Rocket“是給市場(chǎng)帶來新思路的非常重要的一步,它始終以多平臺(tái)容器思想為中心。”它也承諾會(huì)改進(jìn)Docker的安全性。
不是所有人都同意。
雖然Hykes承認(rèn)Rocket提供了“一些好的想法,我們會(huì)引入”,但是他認(rèn)為Rocket沒有像CoreOS那樣本質(zhì)的改進(jìn),包括改進(jìn)的安全性和可組合性。
可能對(duì),也可能不對(duì)。Rocket的受歡迎程度說明它的確滿足了行業(yè)的深層次需求。即使Docker擴(kuò)展其功能來提高易用性,大多數(shù)人可能更想要一個(gè)更為獨(dú)立的容器庫(kù),這樣能更容易得將它集成到現(xiàn)有的項(xiàng)目或者環(huán)境當(dāng)中。Libcontainer可能是解決方法,但是開發(fā)人員看上去更喜歡Rocker的回到初心(back-to-basics)的方式。
消除困惑
這再次給企業(yè)們提出了問題:他們需要Docker還是Rocket?答案很可能是都需要。
有人擔(dān)心這兩種相互競(jìng)爭(zhēng)的技術(shù)帶給客戶的困惑可能比幫助更多。Polvi說,即便如此,業(yè)界,包括競(jìng)爭(zhēng)對(duì)手們,都認(rèn)同的是,容器的價(jià)值。
在這個(gè)全新的領(lǐng)域,每個(gè)人都希望容器能幫助客戶成功。我們覺得必須要做些事情(包括安全,可組件性,和公開標(biāo)準(zhǔn))來確保容器能應(yīng)用于企業(yè)里。我們認(rèn)為Rocket在此有所幫助,并且鼓勵(lì)Docker也轉(zhuǎn)到這個(gè)正確的方向上。
這就是競(jìng)爭(zhēng)所起的作用,更準(zhǔn)確地說,這就是開源所起的作用。Polvi立刻回應(yīng),“總得來說,對(duì)于開發(fā)組件而不是產(chǎn)品,開源非常有效。”尋求開源容器技術(shù)的企業(yè),最好記住這一點(diǎn),開源能幫助更好地開發(fā)構(gòu)建組件,而不是完成整個(gè)企業(yè)產(chǎn)品的開發(fā)。
這還意味著,Polvi繼續(xù)說,CoreOS最主要的競(jìng)爭(zhēng)對(duì)手不是Docker,而是“將所有東西自己攢在一起的內(nèi)部組織。”
“雖然大企業(yè)會(huì)繼續(xù)有自己專門的小組來構(gòu)建其系統(tǒng)的基礎(chǔ)架構(gòu),CoreOS(和Docker)相信他們“可以給那些不想靠自己搭建所有東西,但是想達(dá)到大企業(yè)同等級(jí)別基礎(chǔ)架構(gòu)的公司提供解決方案。”
從另外一方面,Rocket是一個(gè)開源組件,可以幫助企業(yè)構(gòu)建系統(tǒng),而Docker,根據(jù)Polvi的說法,想要自己成為系統(tǒng)/平臺(tái)。這是兩種完全不一樣的方式,兩者都需要。哪種更適合你的項(xiàng)目取決于你到底想要構(gòu)建什么。