隨著2014年的結束,CoreOS面向Docker發(fā)布了一款 Rocket,挑戰(zhàn)Docker被當做“固有缺陷”的進程模型。盡管CoreOS的創(chuàng)始人Alex Polvi曾經軟化過他的立場,他始終堅持自己的基本觀點: Docker不再是構建系統(tǒng)的理想組件。
容器的迅速崛起是最近才出現的,因此很容易看出Polvi積極發(fā)表聲明的原因。隨著容器戰(zhàn)爭的開始,更大的擔憂是,供應商之間反復爭吵是否會最終嚇跑企業(yè)采用容器技術,至少直到塵埃落定。
平臺和組件
有一點CoreOS的Polvi和Docker的創(chuàng)始人Sonomon都贊同:Rocket和Docker沒有競爭性——不見得。Hykes告訴我,Rocket實際上是個Libcontainer的競爭對手,并不是包羅萬象的Docker的競爭對手。Libcontainer是一個為容器指定配置選項的庫,對Docker至關重要,也是個努力幫助定義容器未來的社區(qū)。
InfoWorld的Serdar Yegulalp這樣寫道:“換句話說,Libcontainer真了不起”。
但是,Polvi明顯覺得,Docker忽略了自己的核心,期望擁有更多功能——成為一個平臺。Polvi告訴我:
Docker一開始的時候是作為一個組件來構建平臺,一個構建塊,可以將它分層置入系統(tǒng)來利用容器…這是支撐Docker的原始價值,是一個幫助構建東西的簡單工具,我認為這是目前它如此成功的原因。
從某種意義上說,就有點像我們想要回到過去的好時光。但是Polvi堅持自己并非反對Docker,而更多的是希望Docker保持一個用于構建其他系統(tǒng)的開放組件:
Docker(現在)本身是一個平臺,而不是構建塊。這樣不好嗎?不,它僅僅不再是構建系統(tǒng)的理想組件。我們的系統(tǒng)就包含這個(構建塊),我們想使用容器來構建一個操作系統(tǒng)。
我們認為,組件仍然有存在的必要,來供其它系統(tǒng)進行集成。我們認為Docker原始的價值觀是好的,所以我們必須確保這種價值觀的存在,那就是為什么我們構建了Rocket。
在某種程度上,問題是在它構建業(yè)務的過程中,Docker可能有意或無意中使它難以構建其他業(yè)務,Polvi繼續(xù):
Docker平臺和Rocket是截然不同的東西。Docker平臺是一個產品,Rocket是一個組件。企業(yè)會選擇Docker平臺來替代Cloud Foundry這類東西,像Cloud Foundry這樣的公司會使用Rocket這樣的東西來構建Cloud Foundry。
貴公司需要Docker還是Rocket(或者其它容器技術),也許最后會歸結到你想構建怎樣的東西。但是公司能否通過使用Docker平臺,然后和Polvi的可組合組件Libcontainer進行搭配?
絕對可以,這就是它變得混亂的地方。
Rocket有存在的必要嗎?
開源世界歷史有著悠久的免費歷史,沒人知道需要收費。有時他們會支付,但更多的時候,他們不會支付。
Docker取代了Linux內核存在很久的容器技術LXC。但是正如Pivotal的Andrew Clay Shafer所指出的:“Docker解決了LXC的可用性問題,使得那種技術得以運用。”
以類似的方式,CoreOS也對Docker進行了重大改進。Pivotal的Cloud Foundry執(zhí)行官James Watters強調:Rocket是把新東西帶進市場非常重要的一步,并維持“中心多平臺容器”的觀點。Rocket還承諾改善Docker的安全等等。
并非每個人都同意這樣的觀點。
雖然Hykes承認“Rocket提供了一些好想法,我們將會吸收他們”,他堅持認為Rocket缺少CoreOS尋求的主要改進,包括改善安全性和可組合性。
也許是,也許不是。Rocket的激烈反應表明它服務了深層次的行業(yè)需要。盡管Docker為追求整體提高易用性而擴展功能,很多人需要更多的離散Libcontainer,以便他們能夠輕易地將現有項目和環(huán)境塞進去。Libcontainer或許就是答案,但是開發(fā)人員似乎欣賞Rocket返璞歸真的方法。
清理混亂
再次來看看留給企業(yè)的問題:他們需要Docker還是Rocket?越來越多的答案可能是兩者皆有。
還有的擔心就是,競爭的技術最終會迷惑客戶,而不是幫助他們。Polvi告訴我,實際上這里有著很強的共識,包括競爭對手之間,需要共同講述關于容器的價值:
在我們這個新興空間里,每個人都想客戶成功使用容器。我覺得我們需要做一些事情來保證容器已準備好商用,比如安全、可組合性以及開發(fā)標準。
競爭就是這樣工作的,更恰當地說,開源就是這樣工作的。Polvi立即辯解:“一般來說,開源很適合創(chuàng)建組件,而不是產品”。企業(yè)尋求開源容器技術,然后,記住這一點,期待開源可以提供更好的構建塊,而非成型的企業(yè)產品。
這也意味著,Polvi繼續(xù)告訴我,CoreOS的主要競爭對手不是Docker,而是“內部團隊自己拼湊一切”。雖然大公司有團隊構建系統(tǒng)來運行基礎設施,CoreOS相信,他們可以為那些需要擁有大公司同一級別成熟度而不愿自己構建的公司提供解決方案。
換句話說,Rocket是一個開源組件,可以幫助企業(yè)構建系統(tǒng)。根據Polvi的說法,Docker尋求成為一個平臺。它們是兩種非常不同的方法,都是需要的。在一個特定的項目中,究竟哪個適合你,很大程度上取決于你想構建一個怎樣的東西。