兩年前,青云CEO黃云松曾經說過:Docker公司肯定做不成。當時所有人都認為他瘋了,因為當時正是Docker正是如日中天紅透全世界的時候。
兩年后,黃云松這樣解釋到:有一篇叫Deep Zip的論文中談到,利用RNN神經網絡進行壓縮,能夠在現在最大的壓縮比上提高50%的壓縮率,簡單的說就是數據的存儲空間降低50%,傳輸帶寬降低50%。這才是IT——通過代碼降低成本。為什么我對于Docker投資很謹慎?在CGroup產生之前,我們做進程間隔離。1974年左右開始做,我們在實驗室廣泛使用這種方式,只是沒有隔離。我們在商業應用領域需要有隔離,所以在Linux Kernel引入CGroup,這是一脈相承的,并不難理解。
在2015~16年,容器被大規模應用到原生云應用。在這個階段,憑借成百上千的容器生態項目與貢獻者,用戶社區規模成長到足以支撐大量的部署。正是在這個階段,Docker將它的生產模型演進為一個基于開放式組件的解決方案。
而時隔一年,在DockerCon上發布了Moby,Moby被稱為是Docker項目的新上游,但是沒有提前宣布Moby的發布。所羅門?海克斯(Solomon Hykes)在dockercon17大會上發言時,GitHub上出現了一下子由Docker向Moby大轉變這一幕,無數的人害怕地驚叫起來,這種突如其來、考慮欠周的變化需要 GitHub的工作人員直接干預。
另外,K8S的出現也加速了Docker的消亡,K8s提供鏡像管理功能(Container/Images),完全可以取代Docker的鏡像倉庫。K8s一方面支持容器插件技術,另一方面自己也制定實現一些容器插件,最典型的就是容器網絡插件,自己定義并實現了CNM的容器網絡插件。 因為K8s之前一直支持Docker,為了保持一定的兼容性,K8s繼續支持Docker容器,但是不再支持Docker超出標準容器之外的特定功能,也就是把Docker的定位和RunC等同化,Docker做的再多功能也不用。
runC是一個輕量級通用容器運行環境。目前,它是一個命令行工具,可以根據開放容器方案(Open Container Initiative)生成和運行容器。它的遠景是:由Docker、Google、IBM、Microsoft、RedHat還有其他參與者創建一個通用且標準化的運行環境,提供容器運行時的元素可讀文檔,由Docker向OCI提供基于代碼的可用實現方法。這包括libcontainer,Docker使用的原生底層接口,支持操作系統構建。
國內的公司對RunC的貢獻度越來越高,特別是華為,可能是國內公司中對RunC貢獻最大的。還有EasyStack、南大索芙特等的貢獻,反倒是一些著名的Docker創業公司看不到對RunC的貢獻。這一方面反應了華為、EasyStack技術眼光和對社區的貢獻,另外也反映了為什么華為和EasyStack在商業上也更成功一些。