?作者 | 徐杰承
審校 | 云昭
Docker剛剛度過了非常糟糕的一周。3月15日,Docker對外宣布了其最新的付費(fèi)訂閱計(jì)劃,并向所有Free Team的Docker Hub用戶發(fā)送了電子郵件,聲稱如果未在一個(gè)月內(nèi)升級到付費(fèi)團(tuán)隊(duì),那么他們的賬戶將會(huì)被刪除。
這在業(yè)界引起了軒然大波,鑒于來自多方組織的壓力,Docker很快便進(jìn)行了公開道歉:“我們在宣布Docker免費(fèi)團(tuán)隊(duì)的終結(jié)方面做得很糟糕。”然而不出所料的是,這未能安撫用戶們激烈的情緒,大量用戶在對Docker這一行為進(jìn)行批判的同時(shí),也表示將放棄對Docker的使用與支持。
如今,無論是Docker始終未能解決的安全性問題,還是其早已千瘡百孔并仍在不斷惡化的生態(tài)環(huán)境,都在牽引著這頭曾經(jīng)被稱為“硅谷寵兒”的“巨鯨”,慢慢游向一場無法避免的死區(qū)。
1、安全性頑疾難消
多年以來,Docker都是開發(fā)人員工具箱的重要組成部分,借由Docker的幫助,開發(fā)者能夠以標(biāo)準(zhǔn)的方式構(gòu)建、分發(fā)和部署應(yīng)用程序。然而隨著容器技術(shù)的發(fā)展以及越來越廣泛的應(yīng)用,Docker的安全性問題也變得越來越顯著,并成為了用戶逐漸拋棄Docker的一大核心理由。
由于Docker能夠有效減少代碼膨脹并提供更好的兼容性,因此其通常被用于代替虛擬機(jī)。也正是由于這一點(diǎn),企業(yè)更加傾向于使用容器。但與虛擬機(jī)相比,Docker較低的隔離性勢必會(huì)給用戶帶來一些安全性方面的困擾。
虛擬機(jī)通過創(chuàng)建離散狀態(tài)機(jī)實(shí)現(xiàn)資源分配,每臺計(jì)算機(jī)都有自己的操作系統(tǒng),并通過虛擬機(jī)管理程序?qū)ζ溥M(jìn)行管理。在Docker中,這些容器構(gòu)建在容器引擎之上,容器引擎則運(yùn)行在主機(jī)操作系統(tǒng)的應(yīng)用程序之中。此外,Linux中的chroot和cgroups等更新允許容器在資源劃分方面更接近虛擬機(jī)。
Docker能夠?qū)⑦@些特性打包成易于使用的服務(wù),并添加圖像、Docker文件和Docker CLI等概念,它還使系統(tǒng)管理員能夠在服務(wù)器上快速部署大量容器。但這會(huì)帶來一些安全隱患——系統(tǒng)管理員可以授予用戶在預(yù)先部署的架構(gòu)上運(yùn)行Docker容器的權(quán)限。
但在默認(rèn)情況下,Docker會(huì)將根級權(quán)限授予用戶,而基于Linux的根級用戶訪問權(quán)限類似于Windows中的管理員訪問權(quán)限,但其功能更加強(qiáng)大。通過根級用戶訪問權(quán)限,攻擊者可以刪除整個(gè)文件系統(tǒng),或?qū)⑵胀ㄓ脩籼嵘秊榫哂懈墮?quán)限的用戶,并在沒有通知或警報(bào)的情況下安裝其他惡意軟件。
通過訪問不安全的Docker容器,攻擊者可以在獲得運(yùn)行權(quán)限及訪問權(quán)限后輕松控制其中的代碼。這就意味著心懷不軌的攻擊者可以隨意控制非特權(quán)賬戶的權(quán)限,從而開啟一系列新的攻擊媒介。
諸如此類攻擊在Docker社區(qū)中并不新鮮,并且時(shí)至今日,攻擊者仍在利用這樣的方式在Docker系統(tǒng)中發(fā)掘更多可利用的漏洞。在近日由ZDNET所發(fā)布的一份報(bào)告中也提到:由于尋找管理員訪問權(quán)限暴露的錯(cuò)誤配置非常簡單,因此自2021年以來,Docker已成為了網(wǎng)絡(luò)犯罪分子最主要的攻擊目標(biāo)之一。
不可否認(rèn)的是,Docker的勢頭在其剛發(fā)布的幾年,非常火爆,大量業(yè)內(nèi)人士也表示很少見到如此吸引行業(yè)興趣的新興技術(shù)。然而,隨著興奮轉(zhuǎn)化為實(shí)際部署,大量企業(yè)開始注意到Docker的安全漏洞。尤其是當(dāng)Docker涉及到安全運(yùn)營與管理以及具有保密性、完整性和可用性的通用控件的支持時(shí),其表現(xiàn)令大多數(shù)人十分失望。
2、因傲慢錯(cuò)失K8s,生態(tài)走下坡路
如果說由于自身漏洞與架構(gòu)缺陷所帶來的安全性問題,是生來便拴在這條“鯨魚”尾部的一條鎖鏈。那么近年來Docker生態(tài)系統(tǒng)的不斷流失,則可以算的上是一塊被人為捆綁在鎖鏈另一端的巨石。
縱觀Docker的整個(gè)發(fā)展歷程,其早期所取得的成功使該公司圍繞Docker產(chǎn)品建立了一個(gè)龐大的社區(qū),并推動(dòng)了一輪又一輪的融資。而這也使得Docker公司上下變得愈發(fā)自大,時(shí)至Kubernetes的出現(xiàn)給了他們迎頭一擊。Docker在處理開源社區(qū)寵兒Kubernetes時(shí)沒能給自己帶來任何好處。
盡管Kubernetes最初更傾向于Docker容器,但彼時(shí)傲慢的Docker對這位背靠Google的新朋友擺出了敵對姿態(tài),并一意孤行的推出了自己的容器編排平臺Docker Swarm。然而就在不久之后,Kubernetes就免費(fèi)提供了Swarm的所有功能與更多優(yōu)化,在Docker自己創(chuàng)建的游戲中擊敗了它。
伴隨著Kubernetes這顆新星不斷上升,Docker團(tuán)隊(duì)也逐漸意識到了自己所犯下的錯(cuò)誤。在此后的一次采訪中,Docker創(chuàng)始團(tuán)隊(duì)員工Jér?me Petazzoni表示:“Docker本可以讓Kubernetes成為GitHub上一流的Docker項(xiàng)目,但我們錯(cuò)過了Kubernetes。我們處于集體思維的泡沫中,在內(nèi)部我們認(rèn)為Kubernetes太復(fù)雜了,Swarm會(huì)更成功。沒有意識到這一點(diǎn)是我們集體的失敗。”
雖然不久之后,Docker于2015年通過創(chuàng)建開放容器標(biāo)準(zhǔn)(OCI)試圖再次領(lǐng)導(dǎo)整個(gè)行業(yè)的發(fā)展趨勢,但事實(shí)證明Docker的這一舉動(dòng)最終變成了搬起石頭砸自己的腳。不可否認(rèn)的是,創(chuàng)建開放標(biāo)準(zhǔn)確實(shí)對Docker的生態(tài)發(fā)展起到了短暫的幫助,但這也為Docker的對手提供了一張免費(fèi)的入場券,此后的長期競爭使得Docker的行業(yè)地位受到了嚴(yán)重侵蝕。
最終在2019年,由于市場、財(cái)務(wù)等多方面原因,Docker解雇了大批員工,并選擇將幾乎全部核心業(yè)務(wù)出售給Mirantis。而這次出售所帶來的一系列倉促的商業(yè)化改革、收入流限制以及對此前所達(dá)成協(xié)議的許可條款變更,再度對Docker本就岌岌可危的生態(tài)系統(tǒng)造成了一定的影響。隨后不久,Kubernetes v1.2版本也宣布了將徹底棄用Docker。至此,Docker這顆曾經(jīng)耀眼的明星徹底喪失了光芒。
3、慢性自殺,逐漸凋零
雖然目前的Docker依然稱得上是業(yè)內(nèi)最流行的容器構(gòu)建工具之一,并擁有極為龐大的用戶群體。但大量開發(fā)人員已慢慢開始轉(zhuǎn)向其他替代方案例如Podman或Containerd。尤其是在如今Docker更改其開源計(jì)劃后,這一趨勢一定將會(huì)在未來變得更加快速且明顯。
對于Docker如今的處境,一位Reddit用戶發(fā)表了這樣的總結(jié):Docker如今正在經(jīng)歷著慢性死亡,無論是Docker技術(shù)還是其背后的公司,都已經(jīng)幾乎失去了再度走向輝煌的可能性,因?yàn)樗鼈円呀?jīng)沒有什么能夠再提供的了。
4、寫在最后
如今可以遇見的是,在未來的幾年內(nèi)Docker依然能夠在容器市場中占有一定的比例,但很明顯,十年后的IT環(huán)境將不會(huì)再把Docker作為開發(fā)者技術(shù)堆棧中的必備部分。也許屆時(shí)一些其他依賴于OCI的容器化軟件將占據(jù)市場領(lǐng)導(dǎo)者的位置,但從Docker目前的發(fā)展軌跡來看,這份名單中將不會(huì)再有它的身影。
當(dāng)然,我們也看到Docker在努力挽救,比如從以往的企業(yè)導(dǎo)向變?yōu)楦幼⒅亻_發(fā)者,但大勢所趨,積重難返。最后,只想說,偉大的事物往往不是被別人擊潰的,而是自取敗亡。
參考鏈接:
https://analyticsindiamag.com/kubernetes-parting-ways-with-docker-what-does-it-really-mean/
https://analyticsindiamag.com/kubernetes-docker-container-orchestration-race/