Docker的未來(lái)在哪里?
時(shí)間:2022-04-10 03:27:01 | 來(lái)源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-04-10 03:27:01 來(lái)源:行業(yè)動(dòng)態(tài)
毋庸置疑,容器的流行Docker功不可沒。在Docker出來(lái)之前,容器已經(jīng)存在多年,但并不普及,直到Docker的出現(xiàn)。2013年,Docker的出現(xiàn)第一次把運(yùn)行容器變得這么簡(jiǎn)單,使用Docker開發(fā)人員可以輕松啟動(dòng)、停止和撤銷容器,而且其低學(xué)習(xí)曲線和易用性使其成為軟件開發(fā)過(guò)程中的主流。
可以說(shuō),Docker以一己之力將容器這種相對(duì)邊緣的技術(shù)硬生生地變成了網(wǎng)紅。Docker的走紅帶動(dòng)了Docker生態(tài),大量圍繞著 Docker 項(xiàng)目的網(wǎng)絡(luò)、存儲(chǔ)、監(jiān)控、CI/CD、甚至 UI 項(xiàng)目紛紛出臺(tái),也涌現(xiàn)出了Rancher等一批在開源創(chuàng)業(yè)公司。與此同時(shí),競(jìng)爭(zhēng)的種子也就此埋下。
Docker最初從開發(fā)端發(fā)力,一家獨(dú)大,但是要Docker希望繼續(xù)做大,特別是獲取商業(yè)價(jià)值,就需要向應(yīng)用部署和運(yùn)營(yíng)方向發(fā)力,提供部署、監(jiān)控和管理等放方方面面的工具,Swarm就是其中之一。而對(duì)CoreOS、Red Hat、谷歌和微軟等這些應(yīng)用程序運(yùn)行平臺(tái)提供方而言,支持容器是剛需,但它們希望通過(guò)容器運(yùn)行時(shí)的標(biāo)準(zhǔn)化,來(lái)盡可能降低Docker的影響。顯然,Docker并不愿意,特別是當(dāng)時(shí)Docker如此火爆的背景之下。這就是雙方爭(zhēng)奪的焦點(diǎn)。
OCI規(guī)范的推出就是雙方競(jìng)爭(zhēng)達(dá)成妥協(xié)的結(jié)果。2015 年 Docker 公司牽頭,聯(lián)合CoreOS、Google、RedHat 等公司共同宣布,Docker 將自己的容器運(yùn)行時(shí)庫(kù) Libcontainer 捐出,并改名為 RunC 項(xiàng)目,然后以 RunC 為依據(jù),大家共同制定一套容器和鏡像的標(biāo)準(zhǔn)和規(guī)范,這就是 OCI( Open Container Initiative )。OCI 的提出目的是將在將容器運(yùn)行時(shí)和鏡像的實(shí)現(xiàn)從 Docker 項(xiàng)目中完全剝離出來(lái),為其他廠商不依賴于 Docker 項(xiàng)目構(gòu)建各自的平臺(tái)提供可能。
OCI對(duì)Docker的影響其實(shí)不大,特別是相比于同年成立的CNCF(Cloud Native Computing Foundation),這個(gè)由Google、RedHat 等開源基礎(chǔ)設(shè)施領(lǐng)域玩家們牽頭發(fā)起的基金會(huì),準(zhǔn)備以 Kubernetes 項(xiàng)目為基礎(chǔ),建立一個(gè)由開源基礎(chǔ)設(shè)施領(lǐng)域廠商主導(dǎo)的、按照獨(dú)立基金會(huì)方式運(yùn)營(yíng)的平臺(tái)級(jí)社區(qū),來(lái)對(duì)抗以 Docker 公司為核心的容器商業(yè)生態(tài)。
與之間的較量不同,這次的較量已經(jīng)離開了Docker擅長(zhǎng)的開發(fā)領(lǐng)域,更多地在應(yīng)用的部署和運(yùn)營(yíng),也就是PaaS層面展開,這些恰恰是紅帽、Google等所擅長(zhǎng)的。Kubernetes從最擅長(zhǎng)的容器編排入手,把Docker作為其中一個(gè)組件,可以說(shuō)從一開始就站在戰(zhàn)略制高點(diǎn)。借助Google 在Borg上積累的先進(jìn)技術(shù)加上Red hat等在開源軟件方面運(yùn)營(yíng)的經(jīng)驗(yàn),很快Kubernetes就在競(jìng)爭(zhēng)中開始領(lǐng)先。
當(dāng)然,剛開始時(shí),這種競(jìng)爭(zhēng)是很溫和,2014年Kubernetes誕生時(shí),它使用了Docker,因?yàn)镈ocker是當(dāng)時(shí)最流行的容器運(yùn)行時(shí)。當(dāng)時(shí),除了Docker Kubernetes,還可以選擇Docker Mesos、Docker Swarm。
應(yīng)該說(shuō),Kubernetes與Docker并不是直接的競(jìng)爭(zhēng)關(guān)系,直接競(jìng)爭(zhēng)的是Docker的Swarm。Swarm是一個(gè)集群和調(diào)度工具,作用類似于Kubernetes。不過(guò),Swarm與Kubernetes這兩者的競(jìng)爭(zhēng)實(shí)質(zhì)是對(duì)容器話語(yǔ)權(quán)的競(jìng)爭(zhēng),因此,本質(zhì)上也是Docker與CNCF之間的競(jìng)爭(zhēng)。
為了對(duì)抗Kubernetes,2016 年Docker 公司宣布放棄Swarm 項(xiàng)目,將容器編排和集群管理功能全部?jī)?nèi)置到 Docker 項(xiàng)目當(dāng)中。Docker 公司意識(shí)到了 Swarm 項(xiàng)目目前唯一的競(jìng)爭(zhēng)優(yōu)勢(shì),就是跟 Docker 項(xiàng)目的無(wú)縫集成。不過(guò),這一招看來(lái)不靈,Docker不久就在與CNCF的較量中敗下陣來(lái),在2017年10月的DockerCon EU 大會(huì)上,Docker官方宣布支持Kubernetes,將在自己的主打產(chǎn)品 Docker 企業(yè)版中內(nèi)置 Kubernetes 項(xiàng)目,這也就是意味著,容器編排領(lǐng)域的爭(zhēng)奪已經(jīng)落幕,Kubernetes得到了認(rèn)可。
回頭看來(lái),失利的Docker開始還能憑借強(qiáng)大的容器開發(fā)者生態(tài)發(fā)揮自己的影響力,這才有了kubelet做出的妥協(xié),專門引入Dockershimi。然而,隨著時(shí)間的推移,Kubernetes社區(qū)的逐漸強(qiáng)大,Kubernetes的生態(tài)越來(lái)越完善,Docker的話語(yǔ)權(quán)逐漸減少,被邊緣化也在情理之中,Kubelet撤銷對(duì)Docker的特殊待遇是遲早要發(fā)生的。因此,未來(lái)的Docker更大可能是保持在開發(fā)領(lǐng)域發(fā)揮自己的獨(dú)特價(jià)值。
不過(guò),無(wú)論如何,從Docker 2013年正式上市以來(lái),以一己之力帶火了容器技術(shù),給軟件行業(yè)帶來(lái)了顛覆性變革,推動(dòng)了軟件行業(yè)乃至整個(gè)IT行業(yè)的發(fā)展和創(chuàng)新,從這點(diǎn)而言Docker是當(dāng)之無(wú)愧的英雄,即使失敗也應(yīng)該贏得我們的尊重。