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