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