第2章 走進(jìn)Docker

本文章來(lái)源為《深入淺出Docker》(異步圖書(shū))测垛,為讀書(shū)筆記坟奥。 讀文本章大概需要10分鐘蜈抓,主要的內(nèi)容是介紹docker的發(fā)展歷史鸯绿,不感興趣的伙伴可以跳過(guò)跋破。

關(guān)于容器技術(shù)的圖書(shū)和探討總是不可避免地涉及Docker。但是當(dāng)有人提到“Docker”時(shí)瓶蝴,可能是指如下3種概念之一毒返。

  • Docker公司。
  • Docker的容器運(yùn)行時(shí)和編排引擎舷手。
  • Docker開(kāi)源項(xiàng)目(Moby)拧簸。

如果讀者希望在容器的世界中有所作為,那么需要對(duì)以上3個(gè)內(nèi)容都有所了解男窟。

2.1 Docker——簡(jiǎn)介

Docker是一種運(yùn)行于LinuxWindows上的軟件盆赤,用于創(chuàng)建、管理和編排容器歉眷。Docker是在GitHub上開(kāi)發(fā)的Moby開(kāi)源項(xiàng)目的一部分牺六。Docker公司,位于舊金山汗捡,是整個(gè)Moby開(kāi)源項(xiàng)目的維護(hù)者淑际。Docker公司還提供包含支持服務(wù)的商業(yè)版本的Docker。

以上是一個(gè)簡(jiǎn)要介紹扇住。下面針對(duì)每個(gè)概念進(jìn)行詳細(xì)介紹庸追。此外還包含對(duì)容器生態(tài)的探討,以及對(duì)開(kāi)放容器計(jì)劃(Open Container Initiative, OCI)的介紹台囱。

2.2 Docker公司

Docker公司位于舊金山,由法裔美籍開(kāi)發(fā)者和企業(yè)家Solumon Hykes創(chuàng)立读整,其標(biāo)志如圖2.1所示簿训。

有意思的是,Docker公司起初是一家名為dotCloud的平臺(tái)即服務(wù)(Platform-as-a-Service, PaaS)提供商米间。底層技術(shù)上强品,dotCloud平臺(tái)利用了Linux容器技術(shù)。為了方便創(chuàng)建和管理這些容器屈糊,dotCloud開(kāi)發(fā)了一套內(nèi)部工具的榛,之后被命名為“Docker”。Docker就是這樣誕生的逻锐!

2013年夫晌,dotCloud的PaaS業(yè)務(wù)并不景氣雕薪,公司需要尋求新的突破。于是他們聘請(qǐng)了Ben Golub作為新的CEO晓淀,將公司重命名為“Docker”所袁,放棄dotCloud PaaS平臺(tái),懷揣著“將Docker和容器技術(shù)推向全世界”的使命凶掰,開(kāi)啟了一段新的征程燥爷。

如今Docker公司被普遍認(rèn)為是一家創(chuàng)新型科技公司,據(jù)說(shuō)其市場(chǎng)價(jià)值約為10億美元懦窘。在本書(shū)撰寫(xiě)時(shí)前翎,Docker公司已經(jīng)通過(guò)多輪融資,吸納了來(lái)自硅谷的幾家風(fēng)投公司的累計(jì)超過(guò)2.4億美元的投資畅涂。幾乎所有的融資都發(fā)生在公司更名為“Docker”之后

2.3 Docker運(yùn)行時(shí)與編排引擎

多數(shù)技術(shù)人員在談到Docker時(shí)港华,主要是指Docker引擎

Docker引擎是用于運(yùn)行和編排容器的基礎(chǔ)設(shè)施工具毅戈。有VMware管理經(jīng)驗(yàn)的讀者可以將其類比為ESXi苹丸。ESXi是運(yùn)行虛擬機(jī)的核心管理程序,而Docker引擎是運(yùn)行容器的核心容器運(yùn)行時(shí)苇经。

其他Docker公司或第三方的產(chǎn)品都是圍繞Docker引擎進(jìn)行開(kāi)發(fā)和集成的赘理。如圖2.2所示,Docker引擎位于中心扇单,其他產(chǎn)品基于Docker引擎的核心功能進(jìn)行集成商模。

圍繞Docker引擎進(jìn)行開(kāi)發(fā)和集成的產(chǎn)品

Docker引擎可以從Docker網(wǎng)站下載,也可以基于GitHub上的源碼進(jìn)行構(gòu)建蜘澜。無(wú)論是開(kāi)源版本還是商業(yè)版本施流,都有Linux和Windows版本。

在本書(shū)撰寫(xiě)時(shí)鄙信,Docker引擎主要有兩個(gè)版本:企業(yè)版(EE)和社區(qū)版(CE)瞪醋。

每個(gè)季度,企業(yè)版和社區(qū)版都會(huì)發(fā)布一個(gè)穩(wěn)定版本装诡。社區(qū)版本會(huì)提供4個(gè)月的支持银受,而企業(yè)版本會(huì)提供12個(gè)月的支持。社區(qū)版還會(huì)通過(guò)Edge方式發(fā)布月度版鸦采。

從2017年第一季度開(kāi)始宾巍,Docker版本號(hào)遵循YY.MM-xx格式,類似于Ubuntu等項(xiàng)目渔伯。例如顶霞,2018年6月第一次發(fā)布的社區(qū)版本為18.06.0-ce。

2.4 Docker開(kāi)源項(xiàng)目(Moby)

“Docker”一詞也會(huì)用于指代開(kāi)源Docker項(xiàng)目锣吼。其中包含一系列可以從Docker官網(wǎng)下載和安裝的工具选浑,比如Docker服務(wù)端和Docker客戶端蓝厌。不過(guò),該項(xiàng)目在2017年于Austin舉辦的DockerCon上正式命名為Moby項(xiàng)目鲜侥。由于這次改名褂始,GitHub上的docker/docker庫(kù)也被轉(zhuǎn)移到了moby/moby,并且擁有了項(xiàng)目自己的Logo描函,如圖2.3所示崎苗。

Moby的logo

Moby項(xiàng)目的目標(biāo)是基于開(kāi)源的方式,發(fā)展成為Docker上游舀寓,并將Docker拆分為更多的模塊化組件胆数。Moby項(xiàng)目托管于GitHub的Moby代碼庫(kù),包括子項(xiàng)目和工具列表互墓。核心的Docker引擎項(xiàng)目位于GitHub的moby/moby必尼,但是引擎中的代碼正持續(xù)被拆分和模塊化。

作為一個(gè)開(kāi)源項(xiàng)目篡撵,其源碼是公開(kāi)可得的判莉,在遵循Apache協(xié)議2.0的情況下,任何人都可以自由地下載育谬、貢獻(xiàn)券盅、調(diào)整和使用。

如果查看項(xiàng)目的提交歷史膛檀,可以發(fā)現(xiàn)其中包含來(lái)自如下公司的基礎(chǔ)技術(shù):紅帽锰镀、微軟、IBM咖刃、思科泳炉,以及HPE。此外嚎杨,還可以看到一些并非來(lái)自大公司的貢獻(xiàn)者花鹅。

多數(shù)項(xiàng)目及其工具都是基于Golang編寫(xiě)的,這是谷歌推出的一種新的系統(tǒng)級(jí)編程語(yǔ)言枫浙,又叫Go語(yǔ)言刨肃。使用Go語(yǔ)言的讀者,將更容易為該項(xiàng)目貢獻(xiàn)代碼自脯。

Mody/Docker作為開(kāi)源項(xiàng)目的好處在于其所有的設(shè)計(jì)和開(kāi)發(fā)都是開(kāi)放的,并摒棄了私有代碼閉源開(kāi)發(fā)模式下的陳舊方法斤富。因此發(fā)布過(guò)程也是公開(kāi)進(jìn)行的膏潮,不會(huì)再出現(xiàn)某個(gè)秘密的版本提前幾個(gè)月就宣布要召開(kāi)發(fā)布會(huì)和慶功會(huì)的荒唐情況。Moby/Docker不是這樣運(yùn)作的满力,項(xiàng)目中多數(shù)內(nèi)容都是開(kāi)放并歡迎任何人查看和作出貢獻(xiàn)的焕参。

Moby項(xiàng)目以及更廣泛的Docker運(yùn)動(dòng)一時(shí)間掀起了一波熱潮轻纪。GitHub上已經(jīng)有數(shù)以千計(jì)的提交請(qǐng)求(pull request),以及數(shù)以萬(wàn)計(jì)的基于容器化技術(shù)的項(xiàng)目了叠纷,更不用說(shuō)Docker Hub上數(shù)十億的鏡像下載刻帚。Moby項(xiàng)目已經(jīng)給軟件產(chǎn)業(yè)帶來(lái)了翻天覆地的變化。

這并非妄想涩嚣,Docker已經(jīng)得到了廣泛的應(yīng)用崇众!

2.5 容器生態(tài)

Docker公司的一個(gè)核心哲學(xué)通常被稱為“含電池,但可拆卸”(Batteries included but removable)航厚。

意思是許多Docker內(nèi)置的組件都可以替換為第三方的組件顷歌,網(wǎng)絡(luò)技術(shù)棧就是一個(gè)很好的例子。Docker核心產(chǎn)品內(nèi)置有網(wǎng)絡(luò)解決方案幔睬。但是網(wǎng)絡(luò)技術(shù)棧是可插拔的眯漩,這意味著Docker內(nèi)置的網(wǎng)絡(luò)方案可以被替換為第三方的方案。許多人都會(huì)這樣使用麻顶。 早期的時(shí)候赦抖,經(jīng)常出現(xiàn)第三方插件比 Docker 提供的內(nèi)置組件更好的情況。然而這會(huì)對(duì)Docker公司的商業(yè)模式造成沖擊辅肾。畢竟队萤,Docker公司需要依靠盈利來(lái)維持基業(yè)長(zhǎng)青。因此宛瞄,“內(nèi)置的電池”變得越來(lái)越好用了浮禾。這也導(dǎo)致了生態(tài)內(nèi)部的緊張關(guān)系和競(jìng)爭(zhēng)的加劇。

簡(jiǎn)單來(lái)說(shuō)份汗,Docker內(nèi)置的“電池”仍然是可插拔的盈电,然而越來(lái)越不需要將它們移除了。

盡管如此杯活,容器生態(tài)在一種良性的合作與競(jìng)爭(zhēng)的平衡中還是得以繁榮發(fā)展匆帚。在談及容器生態(tài)時(shí),人們經(jīng)常使用到諸如“co-opetition”與“frenemy這樣的字眼旁钧。這是一個(gè)好現(xiàn)象吸重!因?yàn)榱夹缘母?jìng)爭(zhēng)是創(chuàng)新之母。

2.6 開(kāi)放容器計(jì)劃

如果不談及開(kāi)放容器計(jì)劃(The Open Container Initiative, OCI)的話歪今,對(duì)Docker和容器生態(tài)的探討總是不完整的嚎幸。圖2.4所示為OCI的Logo。

OCI的Logo

OCI是一個(gè)旨在對(duì)容器基礎(chǔ)架構(gòu)中的基礎(chǔ)組件(如鏡像格式與容器運(yùn)行時(shí)寄猩,如果對(duì)這些概念不熟悉的話嫉晶,不要擔(dān)心,本書(shū)后續(xù)會(huì)介紹到它們)進(jìn)行標(biāo)準(zhǔn)化的管理委員會(huì)。

同樣替废,如果不談歷史的話箍铭,對(duì)OCI的探討也是不完整的。和所有的歷史記錄一樣椎镣,其版本取決于誰(shuí)來(lái)講述它诈火。所以,以下是我眼中的容器歷史状答。

我講述的這段簡(jiǎn)短的歷史是冷守,一個(gè)名為CoreOS的公司不喜歡Docker的某些行事方式。因此它就創(chuàng)建了一個(gè)新的開(kāi)源標(biāo)準(zhǔn)剪况,稱作“appc”教沾,該標(biāo)準(zhǔn)涉及諸如鏡像格式和容器運(yùn)行時(shí)等方面。此外它還開(kāi)發(fā)了一個(gè)名為rkt(發(fā)音“rocket”)的實(shí)現(xiàn)译断。

兩個(gè)處于競(jìng)爭(zhēng)狀態(tài)的標(biāo)準(zhǔn)將容器生態(tài)置于一種尷尬的境地授翻。

這使容器生態(tài)陷入了分裂的危險(xiǎn)中,同時(shí)也令用戶和消費(fèi)者陷入兩難孙咪。雖然競(jìng)爭(zhēng)是一件好事堪唐,但是標(biāo)準(zhǔn)的競(jìng)爭(zhēng)通常不是。因?yàn)樗鼤?huì)導(dǎo)致困擾翎蹈,降低用戶接受度淮菠,對(duì)誰(shuí)都無(wú)益。

考慮到這一點(diǎn)荤堪,所有相關(guān)方都盡力用成熟的方式處理此事合陵,共同成立了OCI——一個(gè)旨在管理容器標(biāo)準(zhǔn)的輕量級(jí)的、敏捷型的委員會(huì)澄阳。

在本書(shū)寫(xiě)作時(shí)拥知,OCI已經(jīng)發(fā)布了兩份規(guī)范(標(biāo)準(zhǔn)):鏡像規(guī)范和運(yùn)行時(shí)規(guī)范

提到這兩項(xiàng)標(biāo)準(zhǔn)時(shí)碎赢,經(jīng)常用到的比喻就是鐵軌低剔。它們就像對(duì)鐵軌的尺寸和相關(guān)屬性達(dá)成一致,讓所有人都能自由地建造更好的火車(chē)肮塞、更好的車(chē)廂襟齿、更好的信號(hào)系統(tǒng)、更好的車(chē)站等枕赵。只要各方都遵循標(biāo)準(zhǔn)就是安全的猜欺。沒(méi)人會(huì)希望在鐵軌尺寸問(wèn)題上存在兩個(gè)相互競(jìng)爭(zhēng)的標(biāo)準(zhǔn)!

公平地說(shuō)拷窜,這兩個(gè)OCI規(guī)范對(duì)Docker的架構(gòu)和核心產(chǎn)品設(shè)計(jì)產(chǎn)生了顯著影響开皿。Docker 1.11版本中钓试,Docker引擎架構(gòu)已經(jīng)遵循OCI運(yùn)行時(shí)規(guī)范了。

到目前為止副瀑,OCI已經(jīng)取得了不錯(cuò)的成效,將容器生態(tài)團(tuán)結(jié)起來(lái)恋谭。然而糠睡,標(biāo)準(zhǔn)總是會(huì)減慢創(chuàng)新的步伐!尤其是對(duì)于超快速發(fā)展的新技術(shù)來(lái)說(shuō)更是如此疚颊。這在容器社區(qū)引起了熱烈的討論狈孔。以我之見(jiàn),這是好事材义!容器技術(shù)正在重塑世界均抽,走在技術(shù)前列的人們有熱情、有想法其掂,這很正常油挥。期待關(guān)于標(biāo)準(zhǔn)和創(chuàng)新有更加熱烈的討論!

2.7 本章小結(jié)

本章介紹了Docker公司款熬,這是一家位于舊金山的立志于變更軟件行業(yè)的科技創(chuàng)業(yè)公司深寥。可以說(shuō)他們是現(xiàn)今容器革命的先行者和推動(dòng)者贤牛。但是現(xiàn)在已經(jīng)形成了一個(gè)由作者和競(jìng)爭(zhēng)者組成的大型生態(tài)惋鹅。

Docker項(xiàng)目是開(kāi)源的,其上游源碼位于GitHub的moby/moby庫(kù)殉簸。

開(kāi)放容器計(jì)劃(OCI)在容器運(yùn)行時(shí)格式和容器鏡像格式的標(biāo)準(zhǔn)化方面發(fā)揮了重要作用闰集。

摘錄來(lái)自 深入淺出Docker(異步圖書(shū)) Nigel Poulton(奈吉爾·波爾頓)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市般卑,隨后出現(xiàn)的幾起案子武鲁,更是在濱河造成了極大的恐慌,老刑警劉巖椭微,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洞坑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蝇率,警方通過(guò)查閱死者的電腦和手機(jī)迟杂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)本慕,“玉大人排拷,你說(shuō)我怎么就攤上這事」荆” “怎么了监氢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵布蔗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我浪腐,道長(zhǎng)纵揍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任议街,我火速辦了婚禮泽谨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘特漩。我一直安慰自己吧雹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布涂身。 她就那樣靜靜地躺著雄卷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛤售。 梳的紋絲不亂的頭發(fā)上丁鹉,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音悴能,去河邊找鬼鳄炉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搜骡,可吹牛的內(nèi)容都是我干的拂盯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼记靡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谈竿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起摸吠,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤空凸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后寸痢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呀洲,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年啼止,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了道逗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡献烦,死狀恐怖滓窍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巩那,我是刑警寧澤吏夯,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布此蜈,位于F島的核電站,受9級(jí)特大地震影響噪生,放射性物質(zhì)發(fā)生泄漏裆赵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一跺嗽、第九天 我趴在偏房一處隱蔽的房頂上張望顾瞪。 院中可真熱鬧,春花似錦抛蚁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弥鹦,卻和暖如春肚逸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彬坏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工朦促, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栓始。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓务冕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親幻赚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子禀忆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 2.1 Docker簡(jiǎn)介 當(dāng)人們說(shuō)到Docker的時(shí)候,可能是指如下三種概念之一落恼。 Docker公司 Docker...
    super_pcm閱讀 197評(píng)論 0 0
  • Docker 是一種運(yùn)行于 Linux 和 Windows 上的軟件箩退,用于創(chuàng)建、管理和編排容器佳谦。 Docker 是...
    亦是旅人吶閱讀 365評(píng)論 0 1
  • 很久以前 2008年戴涝,Solomon Hykes 和他的朋友 Kamel Founadi、Sebastien P...
    趙文宇閱讀 2,211評(píng)論 0 2
  • 本章內(nèi)容 ◆ Docker簡(jiǎn)介◆ Docker 鏡像與制作◆ Docker 數(shù)據(jù)管理◆ Docker 網(wǎng)絡(luò)◆ Do...
    Liang_JC閱讀 777評(píng)論 0 0
  • 一.容器(Container) 1>.什么是容器 容器是一種基礎(chǔ)工具钻蔑;泛指任何可以用于容納其它物品的工具啥刻,可以部分...
    寂水流深閱讀 602評(píng)論 0 0