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