DockerCon回顧(一):Docker、CoreOS握手言和,共同制定容器標準

陳愷發表於2015-06-26

美國時間6月22日,DockerCon 2015在美國舊金山舉行。在大會的Keynote上,Docker創始人兼CTO Solomon Hykes宣佈:Docker將聯合CoreOS等公司共同建立一個完全開放的容器標準,稱之為“開放式容器專案”(Open Container Project)。包括AWS、Google、Microsoft、Redhat、VMWare、華為等超過20家業界巨頭同時宣佈支援該專案,併成為開放式容器專案創始成員。Docker率先為OCP捐獻出了Docker所基於的容器格式和執行時(Runtime)程式碼及文件,成為OCP專案的基石。同時,由CoreOS發起的Application Container(appc)標準將與OCP整合。這也就是說OCP將會成為了首個業界開放、統一的容器標準。

近兩年多來,Docker引領了一場以容器為核心的,席捲網際網路應用乃至整個IT界的技術革新,正從根本上改變應用開發和釋出的方式。經過持續爆發式的成長,以及迅速壯大的開發者社群和上下游生態,Docker容器實際上已經成為了容器格式和執行時的標準。之前,以CoreOS為代表的容器提供商認為,容器的標準不應該由一家公司掌控,而應更具開放性。

2014年12月,CoreOS推出自己的容器rkt,並隨後發起了一項開放式的容器標準Application Container(appc),該標準立刻受到了Google、VMWare、Redhat等重量級公司的支援。而由於有不同容器標準的存在,所以也引發了容器戰爭,並很有可能引起社群分裂,從而減慢容器技術的發展程式。OCP的釋出逆轉了這一走勢,包括Docker、CoreOS在內的公司將共同參與開放式委員會的管理,並統一定義容器標準。社群和生態圈合作伙伴將受益於這個開放式的標準。

Docker創始人兼CTO Solomon Hykes在大會上表示,Docker一貫的方針就是要促進開放式的標準。Docker最大的價值不在於特定的技術,而是讓所有人,包括企業和使用者,對於某些標準實現統一。既然Docker已經成為了實際上的容器標準,那麼Docker也肩負著完善這一標準的使命。而Solomon認為,完善容器標準的最好方式就是推進該標準的開放性。Solomon對此提出以下幾點原則。

  1. 正式的標準:開放基於Docker的容器格式,即Open Container Format(開放式容器格式),作為OCP容器格式定義的起點。
  2. 獨立管理:Open Container Project會成為Linux Foundation成員專案,由委員會管理。
  3. 中立的參考實現:Docker貢獻出其所基於runC的程式碼。
  4. 受廣泛認同、支援:超過20家業界巨頭共同參與、支援Open Container Project。
  5. 廣泛接受新的意見和建議:由CoreOS主導的Application Container(appc)標準將與OCP整合,成為OCP專案的一員。

這一宣佈對於容器技術今後發展的影響不可估量。畢竟,相對於容器具體的標準,以及這個標準由誰來定,我們更關心的是容器技術有一個統一的標準可循,這樣大家可以放心參考這一標準,在容器上層做更多的,真正產生價值的創新。

在Keynote大會上資訊量極大,除了最重磅的OCP,還有大量新內容釋出。Solomon Hykes也是以其一貫的“哲學家”的風格,為來賓細細講述Docker創始的初衷,長遠的目標,以及為了實現這些目標將在近期釋出的內容。

歸根結底,Docker的使命是“建立用於超大規模創新的工具”而Solomon認為創新的最大槓桿就是網際網路應用,因此,Docker將不遺餘力地幫助開發者“提升整個網際網路的可程式設計性”。Solomon提到了幾個層面的目標:

  1. 不斷對開發工具進行創新;
  2. 做開發者的管道工;
  3. 推動公開的標準;
  4. 幫助企業用獨到的方法解決實際的問題。

圍繞這些目標,Docker在本次大會上釋出了一系列新產品和功能。

  1. 全新的容器網路 (Docker Network):自併購SocketPlane後,兩個團隊馬不停蹄地將SDN與Docker容器進行整合,重寫了整個網路模組,並將其從Docker程式碼中剝離出來。新的Docker網路有幾個重大的改動:a)Docker將原生支援跨主機連線;b)應用內部可定義多個容器網路,相互之間可實現隔離;c)支援基於DNS的服務發現機制,d)已經有11個網路後端的外掛,今後會支援更多。
  2. 全新的外掛框架(Docker Plugins):使用者可以在保持完整的Docker體驗的同時,透過不同外掛來自定義某方面功能,並不影響與其他支援Docker工具的相容性。同時,在多租戶環境下,不同容器可以使用不同外掛來適應各個場景的需求。目前已有的外掛覆蓋網路、儲存、排程、服務發現等各個方面。
  3. 試驗性發布,每日更新:為了更高效、快速地採納來自社群的建議,並加快迭代速度,Docker推出“Docker試驗性發布”(Docker Experimental Releases),實現每日更新。
  4. Docker Plumbing Project:為了更有效、重複使用Docker某些基礎功能層面的模組,Docker推出“Docker Plumbing Project”,會對Docker程式碼做重構,剝離一些可以獨立使用的模組,反饋到社群,用於Docker以外的專案。
  5. Notary:Docker對安全模組進行重構,剝離出了名為Notary的獨立專案,用於解決網際網路內容釋出的安全性。該專案不侷限於容器應用,但在容器場景下可對映象源認證、映象完整性等安全需求提供很好的支援。
  6. runC:Docker對基本容器實現進行重構,剝離出了最底層的容器執行時runC。在架構層面,Docker本身基於這個模組,但runC對於Docker沒有任何依賴。更重要的是,Docker將runC貢獻給了隨後釋出的OCP專案,形成了該開放性容器執行時標準的基石。

第一天的Keynote,我們看到了一個更加開放的Docker,他將擁抱更多的廠商共建生態,尤其是OCP(Open Container Project)專案的誕生,相信未來社群和生態圈合作伙伴將受益於這個開放式的標準。

 

作者簡介

陳愷,2015年正式加盟靈雀雲創業團隊,任技術長。攜其十數年大規模、企業級分散式系統/雲平臺研發經驗,打造基於容器技術、面向開發者的雲端計算平臺。加入靈雀雲之前,2004年在微軟從事Windows作業系統核心(Kernel)的研發,2010年出任微軟雲平臺Windows Azure首席架構師/軟體開發部經理,專注於雲端計算/分散式系統的研發,組建、帶領團隊開發Azure最核心的中控系統(Fabric Controller),管理並支撐整個雲平臺後端,承載千萬級規模應用。

 

相關文章