當今最火熱的Container技術-Docker,因為能夠讓開發者從應用程式開發、部署以至上線,都以一個獨立封裝的軟體容器來執行,大幅簡化了開發與維運的作業,因而在短短的18個月內快速崛起,以著一股勢不可擋的氣勢,讓整個IT業界全面火速支援Container風潮。不過,現在終於有人要挑戰Docker了,那就是原本率先支援Docker的新一代容器作業系統-CoreOS。
CoreOS創辦人Alex Polvi近日在該公司官方部落格撰文,批評Docker近來的發展方向已背離Container標準化的初衷,他直指Docker公司近期所開發的叢集功能、映象檔管理功能,甚至是層疊網路等,顯示Docker逐步在打造一個管理平臺,而這將使得Container原應具有的標準化、元件獨立性等特性不復存在。
Alex Polvi指出,Docker不再等同於最基本的Container,而是一個Container管理平臺,這與CoreOS所信仰的Unix哲學--「工具可獨立使用,並有乾淨的整合介面。」背道而馳,因而他們決定自己開發新的標準化Container技術--Rocket,並在Github釋出
Rocket 0.1.0
版。
Alex Polvi表示,CoreOS的容器技術稱為App Container,包含了對於容器映像檔App Container Image(ACI)、App Container Runtime及App Container Discovery等規格的描述,而Rocket則是控制Container的指令程式(rkt),未來也不排除會推出其他的程式。此外,他也提到對於安全的強化,而在稍早之前,Docker即因修補安全漏洞而更新版本。
對於CoreOS的批評與挑戰,Docker創辦人、目前擔任Docker技術長的Soloman Hykes顯然不怎麼認同,他在網路上留言指出,競爭一直是個好事,就如同Linux Container技術LXC之於OpenVZ、VServer的競爭,所以他歡迎CoreOS直接以技術來競爭,督促Docker保持正確的發展方向,而不要語帶攻擊。
Soloman Hykes同時也重申設計Docker的13項準則,以反駁Alex Polvi的指控:
1. 應用程式與開發人員的介面必須標準化,堅決避免其四分五裂。
2. 透過驅動程式與附加元件的方式,徹底發揮基礎建設應具備的可插拔與可重組的特性。
3. 內建電池但可更換,Docker的基本功能組態必須滿足8成以上的需求,並且具有可替換性。
4. 採取工具包的模式,在不影響用戶體驗的情況下,任何時候都要允許使用者可以選用部分功能。
5. 開發者與維運者同等重要,讓他們都滿意是可行也是必要的。
6. 不論你是否以Docker建造平臺,我們都將提供支援與協助。
7. 不惜一切代價保護專案的完整性,任何設計上的決策都不能基於營收的考量。
8. Docker公司的定位,簡而言之就是提供基本的基礎架構,藉由銷售服務讓專案發展更成功,如此而已。
9. 雖然並非人人有烤麵包機,也不是每個人都能直接從水壩供電,但每個人都有電源插座可用,而Docker就是那個插座。
10. Docker遵循與Unix、網際網路相同的沙漏式分層結構,這與面面俱到是相反的精神。
11. 任何人都可以在Docker上採取「包圍、擴展再毀滅」(embrace, extend extinguish)的策略,但激勵的作法證明上述策略其實是個笨方法。
12. Docker的範疇與方向是不變的,促進人們的認知,以及執行速度。
13. 如果你是Docker的使用者,那麼我應該聽從你對於範疇與設計的看法;如果你只是為了銷售Docker,那麼你應該聽我的。