你好,我是張磊。我今天分享的主題是:小鯨魚(yú)大事記之群雄并起。
在上一篇文章中,我剖析了 Docker 項(xiàng)目迅速走紅背后的技術(shù)與非技術(shù)原因,也介紹了Docker公司開(kāi)啟平臺(tái)化戰(zhàn)略的野心。可是,Docker 公司為什么在Docker 項(xiàng)目已經(jīng)取得巨大成功之后,卻執(zhí)意要重新走回那條已經(jīng)讓無(wú)數(shù)先驅(qū)們塵沙折戟的 PaaS 之路呢?
實(shí)際上,Docker 項(xiàng)目一日千里的發(fā)展勢(shì)頭,一直伴隨著公司管理層和股東們的陣陣擔(dān)憂。他們心里明白,雖然 Docker 項(xiàng)目備受追捧,但用戶們最終要部署的,還是他們的網(wǎng)站、服務(wù)、數(shù)據(jù)庫(kù),甚至是云計(jì)算業(yè)務(wù)。
這就意味著,只有那些能夠?yàn)橛脩籼峁┢脚_(tái)層能力的工具,才會(huì)真正成為開(kāi)發(fā)者們關(guān)心和愿意付費(fèi)的產(chǎn)品。而 Docker 項(xiàng)目這樣一個(gè)只能用來(lái)創(chuàng)建和啟停容器的小工具,最終只能充當(dāng)這些平臺(tái)項(xiàng)目的“幕后英雄”。
而談到Docker 項(xiàng)目的定位問(wèn)題,就不得不說(shuō)說(shuō) Docker 公司的老朋友和老對(duì)手 CoreOS 了。
CoreOS 是一個(gè)基礎(chǔ)設(shè)施領(lǐng)域創(chuàng)業(yè)公司。 它的核心產(chǎn)品是一個(gè)定制化的操作系統(tǒng),用戶可以按照分布式集群的方式,管理所有安裝了這個(gè)操作系統(tǒng)的節(jié)點(diǎn)。從而,用戶在集群里部署和管理應(yīng)用就像使用單機(jī)一樣方便了。
Docker 項(xiàng)目發(fā)布后,CoreOS 公司很快就認(rèn)識(shí)到可以把“容器”的概念無(wú)縫集成到自己的這套方案中,從而為用戶提供更高層次的 PaaS 能力。所以,CoreOS很早就成了 Docker 項(xiàng)目的貢獻(xiàn)者,并在短時(shí)間內(nèi)成為了 Docker 項(xiàng)目中第二重要的力量。
然而,這段短暫的蜜月期到 2014 年底就草草結(jié)束了。CoreOS公司以強(qiáng)烈的措辭宣布與Docker 公司停止合作,并直接推出了自己研制的 Rocket(后來(lái)叫 rkt)容器。
這次決裂的根本原因,正是源于 Docker 公司對(duì) Docker 項(xiàng)目定位的不滿足。Docker 公司解決這種不滿足的方法就是,讓 Docker 項(xiàng)目提供更多的平臺(tái)層能力,即向 PaaS 項(xiàng)目進(jìn)化。而這,顯然與 CoreOS 公司的核心產(chǎn)品和戰(zhàn)略發(fā)生了嚴(yán)重沖突。
也就是說(shuō),Docker 公司在 2014 年就已經(jīng)定好了平臺(tái)化的發(fā)展方向,并且絕對(duì)不會(huì)跟CoreOS在平臺(tái)層面開(kāi)展任何合作。這樣看來(lái),Docker 公司在 2014 年 12 月的 DockerCon 上發(fā)布Swarm 的舉動(dòng),也就一點(diǎn)都不突然了。
相較于 CoreOS 是依托于一系列開(kāi)源項(xiàng)目(比如Container Linux 操作系統(tǒng)、Fleet 作業(yè)調(diào)度工具、systemd 進(jìn)程管理和 rkt 容器),一層層搭建起來(lái)的平臺(tái)產(chǎn)品,Swarm 項(xiàng)目則是以一個(gè)完整的整體來(lái)對(duì)外提供集群管理功能。而 Swarm 的最大亮點(diǎn),則是它完全使用 Docker 項(xiàng)目原本的容器管理 API 來(lái)完成集群管理,比如:
單機(jī) Docker 項(xiàng)目:
1 $ docker run " 我的容器
多機(jī) Docker 項(xiàng)目:
1 $ docker run -H " 我的 Swarm 集群 API 地址 " " 我的容器"
所以在部署了 Swarm 的多機(jī)環(huán)境下,用戶只需要使用原先的Docker 指令創(chuàng)建一個(gè)容器,這個(gè)請(qǐng)求就會(huì)被 Swarm 攔截下來(lái)處理,然后通過(guò)具體的調(diào)度算法找到一個(gè)合適的Docker Daemon運(yùn)行起來(lái)。
這個(gè)操作方式簡(jiǎn)潔明了,對(duì)于已經(jīng)了解過(guò) Docker 命令行的開(kāi)發(fā)者們也很容易掌握。所以,這樣一個(gè)“原生”的 Docker 容器集群管理項(xiàng)目一經(jīng)發(fā)布,就受到了已有 Docker 用戶群的熱捧。而相比之下,CoreOS 的解決方案就顯得非常另類,更不用說(shuō)用戶還要去接受完全讓人摸不著頭腦、新造的容器項(xiàng)目 rkt 了。
當(dāng)然,Swarm 項(xiàng)目只是 Docker 公司重新定義“PaaS”的關(guān)鍵一環(huán)而已。在 2014 年到2015年這段時(shí)間里,Docker 項(xiàng)目的迅速走紅催生出了一個(gè)非常繁榮的“Docker生態(tài)”。在這個(gè)生態(tài)里,圍繞著 Docker 在各個(gè)層次進(jìn)行集成和創(chuàng)新的項(xiàng)目層出不窮。
而此時(shí)已經(jīng)大紅大紫到“不差錢(qián)”的Docker 公司,開(kāi)始及時(shí)地借助這波浪潮通過(guò)并購(gòu)來(lái)完善自己的平臺(tái)層能力。其中一個(gè)最成功的案例,莫過(guò)于對(duì) Fig 項(xiàng)目的收購(gòu)。
要知道,F(xiàn)ig 項(xiàng)目基本上只是靠?jī)蓚€(gè)人全職開(kāi)發(fā)和維護(hù)的,可它卻是當(dāng)時(shí) GitHub 上熱度堪比Docker 項(xiàng)目的明星。
Fig 項(xiàng)目之所以受歡迎,在于它在開(kāi)發(fā)者面前第一次提出了“容器編排”(Container Orchestration)的概念。
其實(shí),“編排”(Orchestration)在云計(jì)算行業(yè)里不算是新詞匯,它主要是指用戶如何通過(guò)某些工具或者配置來(lái)完成一組虛擬機(jī)以及關(guān)聯(lián)資源的定義、配置、創(chuàng)建、刪除等工作,然后由云計(jì)算平臺(tái)按照這些指定的邏輯來(lái)完成的過(guò)程。
而容器時(shí)代,“編排”顯然就是對(duì) Docker 容器的一系列定義、配置和創(chuàng)建動(dòng)作的管理。而Fig的工作實(shí)際上非常簡(jiǎn)單:假如現(xiàn)在用戶需要部署的是應(yīng)用容器 A、數(shù)據(jù)庫(kù)容器 B、負(fù)載均衡容器C,那么 Fig 就允許用戶把 A、B、C 三個(gè)容器定義在一個(gè)配置文件中,并且可以指定它們之間的關(guān)聯(lián)關(guān)系,比如容器 A 需要訪問(wèn)數(shù)據(jù)庫(kù)容器 B。
接下來(lái),你只需要執(zhí)行一條非常簡(jiǎn)單的指令:
1$ fig up
Fig 就會(huì)把這些容器的定義和配置交給 Docker API 按照訪問(wèn)邏輯依次創(chuàng)建,你的一系列容器就都啟動(dòng)了;而容器 A 與 B 之間的關(guān)聯(lián)關(guān)系,也會(huì)交給 Docker 的 Link 功能通過(guò)寫(xiě)入 hosts 文件的方式進(jìn)行配置。更重要的是,你還可以在 Fig 的配置文件里定義各種容器的副本個(gè)數(shù)等編排參數(shù),再加上 Swarm 的集群管理能力,一個(gè)活脫脫的 PaaS 呼之欲出。
Fig 項(xiàng)目被收購(gòu)后改名為 Compose,它成了 Docker 公司到目前為止第二大受歡迎的項(xiàng)目,一直到今天也依然被很多人使用。
當(dāng)時(shí)的這個(gè)容器生態(tài)里,還有很多令人眼前一亮的開(kāi)源項(xiàng)目或公司。比如,專門(mén)負(fù)責(zé)處理容器網(wǎng)絡(luò)的 SocketPlane 項(xiàng)目(后來(lái)被 Docker 公司收購(gòu)),專門(mén)負(fù)責(zé)處理容器存儲(chǔ)的 Flocker 項(xiàng)目(后來(lái)被 EMC 公司收購(gòu)),專門(mén)給 Docker 集群做圖形化管理界面和對(duì)外提供云服務(wù)的Tutum 項(xiàng)目(后來(lái)被 Docker 公司收購(gòu))等等。
一時(shí)之間,整個(gè)后端和云計(jì)算領(lǐng)域的聰明才俊都匯集在了這個(gè)“小鯨魚(yú)”的周?chē)?,?Docker 生態(tài)的蓬勃發(fā)展獻(xiàn)上了自己的智慧。
而除了這個(gè)異常繁榮的、圍繞著 Docker 項(xiàng)目和公司的生態(tài)之外,還有一個(gè)勢(shì)力在當(dāng)時(shí)也是風(fēng)頭無(wú)兩,這就是老牌集群管理項(xiàng)目 Mesos 和它背后的創(chuàng)業(yè)公司Mesosphere。
Mesos 作為 Berkeley 主導(dǎo)的大數(shù)據(jù)套件之一,是大數(shù)據(jù)火熱時(shí)最受歡迎的資源管理項(xiàng)目,也是跟 Yarn 項(xiàng)目殺得難舍難分的實(shí)力派選手。
不過(guò),大數(shù)據(jù)所關(guān)注的計(jì)算密集型離線業(yè)務(wù),其實(shí)并不像常規(guī)的 Web 服務(wù)那樣適合用容器進(jìn)行托管和擴(kuò)容,也沒(méi)有對(duì)應(yīng)用打包的強(qiáng)烈需求,所以 Hadoop、Spark等項(xiàng)目到現(xiàn)在也沒(méi)在容器技術(shù)上投下更大的賭注;但是對(duì)于 Mesos 來(lái)說(shuō),天生的兩層調(diào)度機(jī)制讓它非常容易從大數(shù)據(jù)領(lǐng)域抽身,轉(zhuǎn)而去支持受眾更加廣泛的 PaaS 業(yè)務(wù)。
在這種思路的指導(dǎo)下,Mesosphere 公司發(fā)布了一個(gè)名為Marathon 的項(xiàng)目,而這個(gè)項(xiàng)目很快就成為了 Docker Swarm 的一個(gè)有力競(jìng)爭(zhēng)對(duì)手。
雖然不能提供像 Swarm 那樣的原生 Docker API,Mesos 社區(qū)卻擁有一個(gè)獨(dú)特的競(jìng)爭(zhēng)力:超大規(guī)模集群的管理經(jīng)驗(yàn)。
早在幾年前,Mesos 就已經(jīng)通過(guò)了萬(wàn)臺(tái)節(jié)點(diǎn)的驗(yàn)證,2014 年之后又被廣泛使用在 eBay 等大型互聯(lián)網(wǎng)公司的生產(chǎn)環(huán)境中。而這次通過(guò) Marathon 實(shí)現(xiàn)了諸如應(yīng)用托管和負(fù)載均衡的 PaaS 功能之后,Mesos+Marathon 的組合實(shí)際上進(jìn)化成了一個(gè)高度成熟的 PaaS 項(xiàng)目,同時(shí)還能很好地支持大數(shù)據(jù)業(yè)務(wù)。
所以,在這波容器化浪潮中,Mesosphere 公司不失時(shí)機(jī)地提出了一個(gè)名叫“DC/OS”(數(shù)據(jù)中心操作系統(tǒng))的口號(hào)和產(chǎn)品,旨在使用戶能夠像管理一臺(tái)機(jī)器那樣管理一個(gè)萬(wàn)級(jí)別的物理機(jī)集群,并且使用 Docker 容器在這個(gè)集群里自由地部署應(yīng)用。而這,對(duì)很多大型企業(yè)來(lái)說(shuō)具有著非同尋常的吸引力。
這時(shí),如果你再去審視當(dāng)時(shí)的容器技術(shù)生態(tài),就不難發(fā)現(xiàn) CoreOS 公司竟然顯得有些尷尬了。它的 rkt 容器完全打不開(kāi)局面,F(xiàn)leet 集群管理項(xiàng)目更是少有人問(wèn)津,CoreOS 完全被Docker公司壓制了。
而處境同樣不容樂(lè)觀的似乎還有 RedHat,作為 Docker 項(xiàng)目早期的重要貢獻(xiàn)者,RedHat 也是因?yàn)閷?duì) Docker 公司平臺(tái)化戰(zhàn)略不滿而憤憤退出。但此時(shí),它竟只剩下 OpenShift 這個(gè)跟Cloud Foundry 同時(shí)代的經(jīng)典 PaaS 一張牌可以打,跟 Docker Swarm和轉(zhuǎn)型后的 Mesos 完全不在同一個(gè)“競(jìng)技水平”之上。
那么,事實(shí)果真如此嗎?
2014 年注定是一個(gè)神奇的年份。就在這一年的 6 月,基礎(chǔ)設(shè)施領(lǐng)域的翹楚Google 公司突然發(fā)力,正式宣告了一個(gè)名叫 Kubernetes 項(xiàng)目的誕生。而這個(gè)項(xiàng)目,不僅挽救了當(dāng)時(shí)的CoreOS和 RedHat,還如同當(dāng)年 Docker 項(xiàng)目的橫空出世一樣,再一次改變了整個(gè)容器市場(chǎng)的格局。
總結(jié)
我分享了 Docker 公司平臺(tái)化戰(zhàn)略的來(lái)龍去脈,闡述了Docker Swarm 項(xiàng)目發(fā)布的意義和它背后的設(shè)計(jì)思想,介紹了 Fig(后來(lái)的Compose)項(xiàng)目如何成為了繼 Docker 之后最受矚目的新星。
同時(shí),我也和你一起回顧了 2014~2015 年間如火如荼的容器化浪潮里群雄并起的繁榮姿態(tài)。在這次生態(tài)大爆發(fā)中,Docker 公司和Mesosphere 公司,依托自身優(yōu)勢(shì)率先占據(jù)了有利位置。
但是,更強(qiáng)大的挑戰(zhàn)者們,即將在不久后紛至沓來(lái)。
思考題
你所在團(tuán)隊(duì)有沒(méi)有在 2014~2015 年 Docker 熱潮中,推出過(guò)相關(guān)的容器產(chǎn)品或者項(xiàng)目?現(xiàn)在結(jié)局如何呢?
歡迎你給我留言,也歡迎分享給更多的朋友一起閱讀。
文章回復(fù):
修煉
技術(shù)一流 還這么會(huì)寫(xiě)文章!
2018-08-30
王江華
不錯(cuò),了解docker的來(lái)龍去脈,也了解了歷史,期待更新
2018-08-30
Backkom
docker生態(tài)維護(hù)的很好,這也是發(fā)展迅猛的重要原因,得開(kāi)發(fā)者得天下,一如android的發(fā)展
2018-08-30
blackpiglet
我是在15年中接觸的docker 和 k8s, 當(dāng)時(shí)公司的目標(biāo)是做出一個(gè)集成 ci cd 的 paas 平臺(tái),并統(tǒng)一內(nèi)部所有項(xiàng)目的開(kāi)發(fā)流程。但是投入不大,畢竟小公司,16年我就離開(kāi)了,不清楚現(xiàn)在產(chǎn)品是否還健在?,F(xiàn)在回想起來(lái),那時(shí)候有了docker 人人都想搞paas,至于公司實(shí)際是否需要,考慮的到?jīng)]有那么仔細(xì)。這和現(xiàn)在微服務(wù)這波很像。
2018-08-30
作者回復(fù)
人人都愛(ài)pass,但落地嘛就是另一回事兒了
2018-08-31
子非魚(yú)
真是群雄并起,競(jìng)爭(zhēng)激烈啊,而反觀國(guó)內(nèi)…!
2018-08-31
作者回復(fù)
國(guó)內(nèi)也很激烈,不過(guò)是在商業(yè)維度。
2018-08-31
@特
PaaS發(fā)展史真的是波瀾壯闊。我是2015年底才接觸Docker的,2016年初接觸mesos和馬拉松。結(jié)果還沒(méi)一個(gè)月我們項(xiàng)目就黃了,直接換成redhat的解決方案,接下來(lái)就入了openshift的坑出不去了?? 那個(gè)時(shí)候openshift已經(jīng)出到1.2了。
2018-08-30
作者回復(fù)
不妨嘗試多學(xué)習(xí)kubernetes 的基礎(chǔ),openshift作為一個(gè)封裝自然也就簡(jiǎn)單多了
2018-08-30
eason2017
終于到k8s了
作者回復(fù)
別急,咱們先聊容器
2018-08-31
換個(gè)ID過(guò)日子
看得我熱血沸騰!
2018-09-13
作者回復(fù)
那就換熱血為動(dòng)力!
2018-09-13
李金洋
老師覺(jué)得下一個(gè)容器平臺(tái)的攪局者會(huì)是一個(gè)什么類型的公司,或者說(shuō)解決了當(dāng)前容器圈的什么痛點(diǎn)。感覺(jué)k8s已經(jīng)成為容器圈的標(biāo)準(zhǔn)了,但是復(fù)雜性真的挺高
2018-09-06
作者回復(fù)
linux復(fù)雜性也很高
2018-09-07
猿工匠
過(guò)癮,期待更新??
2018-08-30
fhchina
想要了解后續(xù)的標(biāo)準(zhǔn)化過(guò)程中,Docker分拆出的開(kāi)源產(chǎn)品與標(biāo)準(zhǔn)的關(guān)系與歷程,感覺(jué)又多又亂
2018-08-30
尖端科技
張老師,請(qǐng)教一下docker是否合適用來(lái)部署使用gpu這種資源的程序?docker部署的程序是適用于任何的程序部署?有沒(méi)有啥限制?
2018-08-30
作者回復(fù)
在學(xué)習(xí)了容器技術(shù)基礎(chǔ)之后,相信你自己自己就能回答這個(gè)問(wèn)題了
2018-08-30
AhaThinking
文章看的真是酣暢淋漓,,,這文筆,就像看歷史小說(shuō)一樣,每一集還有伏筆讓人欲罷不能
2018-11-12
Geek_d70aba
15年公司實(shí)踐過(guò)docker項(xiàng)目,并且在一個(gè)現(xiàn)場(chǎng)上線運(yùn)行過(guò)。但是畢竟是單服務(wù)器運(yùn)行,沒(méi)有體現(xiàn)出docker的優(yōu)勢(shì),反而導(dǎo)致了其他更多的問(wèn)題,目前公司又展開(kāi)了k8s的研究,希望這次能成功。
碼字的路人
很好的了解了 2014-2015的 DOCKER的歷程,更好的了解了什么叫容器 以及一些 容器使用
的工具等。
2018-10-08
song
mesos的兩級(jí)調(diào)度是什么意思,怎么理解,是哪兩級(jí)?
2018-10-01
作者回復(fù)
framework加scheduler,可以看下mesos論文
2018-10-01
憨先生
公司是去年開(kāi)始開(kāi)發(fā)平臺(tái)級(jí)服務(wù),也引入了容器docker的概念,目前一切都還好
2018-09-27
wilson
目前公司做語(yǔ)音評(píng)測(cè),對(duì)cpu和內(nèi)存要求較高,尤其是cpu,敢問(wèn),可用docker來(lái)跑這種應(yīng)用嗎?
2018-09-23
作者回復(fù)
適合
2018-09-23
Kame
15接觸docker,由于各種原因吧、最終沒(méi)能上生產(chǎn)、只是測(cè)試開(kāi)發(fā),現(xiàn)在k8s出來(lái)了,又可以重新搞起
2018-09-17
糖餅餅屋
14-15年的時(shí)候,團(tuán)隊(duì)推出過(guò)paas項(xiàng)目,技術(shù)選型是docker+mesos+marathon,哎結(jié)果不到兩年,k8s就已經(jīng)如火如荼,資源調(diào)度技術(shù)組件不換都不行……