當前位置:
首頁 > 科技 > 美亞排名超高的Docker入門書,不止簡單易懂

美亞排名超高的Docker入門書,不止簡單易懂

在美國亞馬遜,有一本書的影響力超高的Docker入門書,在操作系統分類中排行第一,超越了眾多實力派Docker書,眾多五星好評。也許你有所耳聞,這本書就是《深入淺出Docker》

這是一本關於Docker的圖書。這本書的宗旨是從零開始學習Docker,因此你無須任何前置知識儲備。如果你對Docker感興趣,希望了解Docker工作原理以及如何正確使用Docker,則本書適合你。同時本書也可作為Docker認證工程師考試的參考圖書。

本書作者

Nigel Poulton,亞馬遜暢銷圖書作者,Docker Captain(Docker官方項目),存儲專家,Docker技術先驅。Nigel有豐富的運維技術經驗,著有多部容器相關的圖書,並開設了視頻培訓課程。除了線上途徑,他還熱衷於開展線下會議講座。他活躍於Docker Captain計劃社區,致力於創造世界上最好的Docker和容器學習資源,在業界有非常大的影響力。

Docker Captain計劃:Docker Captain是Docker官方頒發給社區中那些既精通各自領域又熱衷於與他人分享Docker知識的成員的獎項。Captain和Docker專家分享他們的專業知識和經驗,他們對Docker的發展產生了巨大的影響——無論是線上支持,還是線下活動——Docker技術的普及在他們的努力下成為可能

Docker認證工程師(Docker Certified Associate)

Docker於2017年秋髮布了第1版專業資質認證,稱為Docker認證工程師(Docker Certified Associate, DCA),面向想要評估自身Docker管理水平的人群。

本書覆蓋了認證考試的所有知識點,但本書並非應試書,而是一本易於閱讀的實用技術圖書。

祝願讀者考試順利!

為什麼要閱讀本書,為什麼要關注Docker

如今Docker無處不在,這是不爭的事實。開發人員都很喜歡它,運維工程師也需要它。他們都需要深入了解如何在關鍵業務環境中構建和維護符合生產級別要求的容器化應用,本書將幫助讀者掌握它。

Docker僅能供開發人員所用嗎

對於認為Docker是開發人員專屬工具的人來說,恐怕要準備好顛覆自己的認知了。

容器化應用需要有地方運行,也需要有人來管理。如果認為只是開發人員來管理它,那就大錯特錯了,事實上運維需要構建和運行高性能、生產級別的Docker基礎架構。對於專註於運維工作卻尚未掌握Docker的朋友來說,日子恐怕不太好過。不過不必焦慮,本書將幫你掌握Docker。

如何讀本書?

本書分為兩部分。

Docker概覽篇:本篇介紹Docker公司(Docker, Inc.)、Docker(Moby)項目、什麼是OCI、為什麼需要容器等。如果讀者想要對Docker和容器有一個全面的了解,則需要閱讀這些內容。

Docker技術篇:本篇是全書的主要內容,包含了掌握Docker所需的所有知識。這部分會詳細介紹鏡像、容器,以及越來越重要的關於編排的知識。此外,本書甚至還介紹了企業應用中比較關心的技術,比如TLS、RBAC、與AD的集成,以及備份。讀者不僅能夠了解相關的概念和原理,還能夠參考本書給出的命令和例子進行練習。

Docker技術篇的多數章節都可以分為3個部分——簡介、詳解和命令。

「簡介」部分是大約兩三段的簡要介紹,用於概括性地闡述相應章節的內容,也能夠方便讀者在複習時快速回憶相關的內容。

「詳解」部分會詳細介紹工作原理,並配有示例的介紹。

「命令」部分會以一種易於閱讀的方式列出所有相關命令及其簡要說明。

希望讀者能夠喜歡這種方式。

提到Docker時你該了解什麼?

關於容器技術的圖書和探討總是不可避免地涉及Docker。但是當有人提到「Docker」時,可能是指如下3種概念之一。

Docker公司。

Docker的容器運行時和編排引擎。

Docker開源項目(Moby)。

如果讀者希望在容器的世界中有所作為,那麼需要對以上3個內容都有所了解。

Docker——簡介

Docker是一種運行於Linux和Windows上的軟體,用於創建、管理和編排容器。Docker是在GitHub上開發的Moby開源項目的一部分。Docker公司,位於舊金山,是整個Moby開源項目的維護者。Docker公司還提供包含支持服務的商業版本的Docker。

以上是一個簡要介紹。下面針對每個概念進行詳細介紹。此外還包含對容器生態的探討,以及對開放容器計劃(Open Container Initiative, OCI)的介紹。

Docker公司

Docker公司位於舊金山,由法裔美籍開發者和企業家Solumon Hykes創立,其標誌如圖1所示。

有意思的是,Docker公司起初是一家名為dotCloud的平台即服務(Platform-as-a-Service, PaaS)提供商。底層技術上,dotCloud平台利用了Linux容器技術。為了方便創建和管理這些容器,dotCloud開發了一套內部工具,之後被命名為「Docker」。Docker就是這樣誕生的!

2013年,dotCloud的PaaS業務並不景氣,公司需要尋求新的突破。於是他們聘請了Ben Golub作為新的CEO,將公司重命名為「Docker」,放棄dotCloud PaaS平台,懷揣著「將Docker和容器技術推向全世界」的使命,開啟了一段新的征程。

如今Docker公司被普遍認為是一家創新型科技公司,據說其市場價值約為10億美元。在本書撰寫時,Docker公司已經通過多輪融資,吸納了來自矽谷的幾家風投公司的累計超過2.4億美元的投資。幾乎所有的融資都發生在公司更名為「Docker」之後。

公司更名為Docker之後,進行了幾次小規模的未公開價格的收購,來豐富其產品和服務組合。

至本書撰寫時,Docker公司擁有約300~400名僱員,並舉辦名為DockerCon的年度會議。DockerCon的目標是聚攏不斷發展的容器生態,並促進Docker和容器技術的推廣。

本書將始終使用「Docker公司」來指代Docker這家公司,其他地方出現的「Docker」都是指容器技術或開源項目。

註:「Docker」一詞來自英國口語,意為碼頭工人(Dock Worker),即從船上裝卸貨物的人。

Docker運行時與編排引擎

多數技術人員在談到Docker時,主要是指Docker引擎。

Docker引擎是用於運行和編排容器的基礎設施工具。有VMware管理經驗的讀者可以將其類比為ESXi。ESXi是運行虛擬機的核心管理程序,而Docker引擎是運行容器的核心容器運行時。

其他Docker公司或第三方的產品都是圍繞Docker引擎進行開發和集成的。如圖2所示,Docker引擎位於中心,其他產品基於Docker引擎的核心功能進行集成。

Docker引擎可以從Docker網站下載,也可以基於GitHub上的源碼進行構建。無論是開源版本還是商業版本,都有Linux和Windows版本。

在本書撰寫時,Docker引擎主要有兩個版本:企業版(EE)和社區版(CE)。

每個季度,企業版和社區版都會發布一個穩定版本。社區版本會提供4個月的支持,而企業版本會提供12個月的支持。

社區版還會通過Edge方式發布月度版。

從2017年第一季度開始,Docker版本號遵循YY.MM-xx格式,類似於Ubuntu等項目。例如,2018年6月第一次發布的社區版本為18.06.0-ce。

註:2017年第一季度以前,Docker版本號遵循大版本號.小版本號的格式。採用新格式前的最後一個版本是Docker 1.13。

Docker開源項目(Moby)

「Docker」一詞也會用於指代開源Docker項目。其中包含一系列可以從Docker官網下載和安裝的工具,比如Docker服務端和Docker客戶端。不過,該項目在2017年於Austin舉辦的DockerCon上正式命名為Moby項目。由於這次改名,GitHub上的docker/docker庫也被轉移到了moby/moby,並且擁有了項目自己的Logo,如圖3所示。

Moby項目的目標是基於開源的方式,發展成為Docker上游,並將Docker拆分為更多的模塊化組件。Moby項目託管於GitHub的Moby代碼庫,包括子項目和工具列表。核心的Docker引擎項目位於GitHub的moby/moby,但是引擎中的代碼正持續被拆分和模塊化。

作為一個開源項目,其源碼是公開可得的,在遵循Apache協議2.0的情況下,任何人都可以自由地下載、貢獻、調整和使用。

如果查看項目的提交歷史,可以發現其中包含來自如下公司的基礎技術:紅帽、微軟、IBM、思科,以及HPE。此外,還可以看到一些並非來自大公司的貢獻者。

多數項目及其工具都是基於Golang編寫的,這是谷歌推出的一種新的系統級編程語言,又叫Go語言。使用Go語言的讀者,將更容易為該項目貢獻代碼。

Mody/Docker作為開源項目的好處在於其所有的設計和開發都是開放的,並摒棄了私有代碼閉源開發模式下的陳舊方法。因此發布過程也是公開進行的,不會再出現某個秘密的版本提前幾個月就宣布要召開發布會和慶功會的荒唐情況。Moby/Docker不是這樣運作的,項目中多數內容都是開放並歡迎任何人查看和作出貢獻的。

Moby項目以及更廣泛的Docker運動一時間掀起了一波熱潮。GitHub上已經有數以千計的提交請求(pull request),以及數以萬計的基於容器化技術的項目了,更不用說Docker Hub上數十億的鏡像下載。Moby項目已經給軟體產業帶來了翻天覆地的變化。

這並非妄想,Docker已經得到了廣泛的應用!

容器生態

Docker公司的一個核心哲學通常被稱為「含電池,但可拆卸」(Batteries included but removable)。

意思是許多Docker內置的組件都可以替換為第三方的組件,網路技術棧就是一個很好的例子。Docker核心產品內置有網路解決方案。但是網路技術棧是可插拔的,這意味著Docker內置的網路方案可以被替換為第三方的方案。許多人都會這樣使用。

早期的時候,經常出現第三方插件比 Docker 提供的內置組件更好的情況。然而這會對Docker公司的商業模式造成衝擊。畢竟,Docker公司需要依靠盈利來維持基業長青。因此,「內置的電池」變得越來越好用了。這也導致了生態內部的緊張關係和競爭的加劇。

簡單來說,Docker內置的「電池」仍然是可插拔的,然而越來越不需要將它們移除了。

儘管如此,容器生態在一種良性的合作與競爭的平衡中還是得以繁榮發展。在談及容器生態時,人們經常使用到諸如「co-opetition」[1]與「frenemy」[2]這樣的字眼。這是一個好現象!因為良性的競爭是創新之母。

[1] 意即合作與競爭,英文中co-operation與competition合併的詞。——譯者注

[2] 英文中朋友friend與敵人enemy合併的詞。——譯者注

開放容器計劃

如果不談及開放容器計劃(The Open Container Initiative, OCI)的話,對Docker和容器生態的探討總是不完整的。圖4所示為OCI的Logo。

圖4 OCI的Logo

OCI是一個旨在對容器基礎架構中的基礎組件(如鏡像格式與容器運行時,如果對這些概念不熟悉的話,不要擔心,本書後續會介紹到它們)進行標準化的管理委員會。

同樣,如果不談歷史的話,對OCI的探討也是不完整的。和所有的歷史記錄一樣,其版本取決於誰來講述它。所以,以下是我眼中的容器歷史。

我講述的這段簡短的歷史是,一個名為CoreOS的公司不喜歡Docker的某些行事方式。因此它就創建了一個新的開源標準,稱作「appc」,該標準涉及諸如鏡像格式和容器運行時等方面。此外它還開發了一個名為rkt(發音「rocket」)的實現。

兩個處於競爭狀態的標準將容器生態置於一種尷尬的境地。

這使容器生態陷入了分裂的危險中,同時也令用戶和消費者陷入兩難。雖然競爭是一件好事,但是標準的競爭通常不是。因為它會導致困擾,降低用戶接受度,對誰都無益。

考慮到這一點,所有相關方都儘力用成熟的方式處理此事,共同成立了OCI——一個旨在管理容器標準的輕量級的、敏捷型的委員會。

在本書寫作時,OCI已經發布了兩份規範(標準):鏡像規範和運行時規範。

提到這兩項標準時,經常用到的比喻就是鐵軌。它們就像對鐵軌的尺寸和相關屬性達成一致,讓所有人都能自由地建造更好的火車、更好的車廂、更好的信號系統、更好的車站等。只要各方都遵循標準就是安全的。沒人會希望在鐵軌尺寸問題上存在兩個相互競爭的標準!

公平地說,這兩個OCI規範對Docker的架構和核心產品設計產生了顯著影響。Docker 1.11版本中,Docker引擎架構已經遵循OCI運行時規範了。

到目前為止,OCI已經取得了不錯的成效,將容器生態團結起來。然而,標準總是會減慢創新的步伐!尤其是對於超快速發展的新技術來說更是如此。這在容器社區引起了熱烈的討論。以我之見,這是好事!容器技術正在重塑世界,走在技術前列的人們有熱情、有想法,這很正常。期待關於標準和創新有更加熱烈的討論!

OCI在Linux基金會的支持下運作,Docker公司和CoreOS公司都是主要貢獻者。

【英】Nigel Poulton(奈吉爾 波爾頓)

碼書商店是CSDN專為我們的用戶建立的一個商店,這裡提供大量的技術書籍,除了書籍我們也提供生活類的相關產品,如耳機、鍵盤等,或者你們如果有需求也可以聯繫碼書商店的客服或者在公眾號下留言你們需要的產品,我們盡量滿足大家需求哦。

作為碼書商店的運營人員,誠邀你們進入我們的「CSDN碼書福利群」,群里會不定時的給大家贈書書籍、優惠券等,有書籍推薦或者物流方面信息也可群里諮詢~目前群已滿100人,需要加群的請掃下方二維碼添加微信,拉你入群哦~

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

老碼農冒死揭開真相:「別吹了,Python無用!」
Python處理文件系統的10種方法

TAG:AI科技大本營 |