如果想自己動手寫Docker_你可能需要看這本書(文末附錄五篇精彩書摘)

摘要:《自己動手寫Docker》在詳細(xì)分析Docker所依賴的技術(shù)棧的基礎(chǔ)上,一步一步地通過代碼實(shí)例,讓讀者可以自己循序漸進(jìn)地用Go語言構(gòu)建出一個(gè)容器的引擎。不同于其他Docker原理介紹或代碼剖析的書籍,《自己動手寫Docker》旨在提供給讀者一條動手路線,一步一步地實(shí)現(xiàn)Docker的隔離性,構(gòu)建Docker的鏡像、容器的生命周期及Docker的網(wǎng)絡(luò)等。

圖書鏈接

為什么要寫這本書

Docker 技術(shù)可謂是近年最火熱的技術(shù)之一,鋪天蓋地的技術(shù)論壇和各種講座,大家都在分享關(guān)于如何容器化及如何使用Docker優(yōu)化自己運(yùn)維和開發(fā)流程的經(jīng)驗(yàn)。隨著Docker技術(shù)的逐漸普及,使用Docker已經(jīng)不再是一個(gè)難題。現(xiàn)在更加重要的是生產(chǎn)環(huán)境容器化的最佳實(shí)踐,另外就是容器的編排框架之爭。但是,對于技術(shù)人員來說,除去Docker 外表的繁華外,什么是容器,容器到底是怎么創(chuàng)建的,容器底層的技術(shù)探秘也是非常重要的。

我在2014年開始接觸 Docker,經(jīng)歷了從最初的新奇—感嘆竟然還有Docker 這樣的好工具,到逐漸熟悉Docker的各種功能,嘗試在生產(chǎn)環(huán)境中使用Docker技術(shù)的過程。但是,每每被人問到:“Docker技術(shù)到底是怎么實(shí)現(xiàn)的呢?”我只能粗粗淺淺地說:“Docker是使用Linux Kernel的Namespace 和 Cgroups實(shí)現(xiàn)的一種容器技術(shù)。”那么,什么是Namespace,什么是Cgroups,Docker是怎么使用它們的,容器到底是怎么一步步被創(chuàng)建出來的?問到這些,我就會支支吾吾地不知所以。由此可見,了解容器技術(shù)的底層技術(shù),然后明白它們是如何工作的,尤為重要,這些才是整個(gè)容器技術(shù)的基石,掌握了這些基石才能更加容易地向上攀登。

單單講解底層的技術(shù)實(shí)現(xiàn)細(xì)節(jié)和源碼解讀是很枯燥的一件事,一般來說很難有耐心去一點(diǎn)點(diǎn)細(xì)讀然后揣摩其中的奧妙,這樣囫圇吞棗地過一遍技術(shù)細(xì)節(jié),作用不大。因此,便萌生了寫一本《自己動手寫Docker》這樣的書的想法。本書不去刻意講解容器技術(shù)的細(xì)節(jié),用到什么講解什么,點(diǎn)到為止,更加細(xì)節(jié)的內(nèi)容留給讀者自己探索。通過閱讀本書,可以一步步地去了解容器技術(shù)的實(shí)現(xiàn)細(xì)節(jié),更可以跟著作者一步步地用自己的代碼去實(shí)現(xiàn)它。本書最大的樂趣莫過于用自己最新了解到的知識去動手實(shí)現(xiàn)自己的容器。由此可以進(jìn)一步打開你進(jìn)入容器技術(shù)社區(qū)的大門。

本書的內(nèi)容

本書的目的是去引導(dǎo)讀者通過學(xué)習(xí)容器技術(shù)的實(shí)現(xiàn)細(xì)節(jié),一步步去構(gòu)建一個(gè)簡單的容器。 從這個(gè)過程中,了解整個(gè)容器技術(shù)領(lǐng)域和實(shí)現(xiàn)細(xì)節(jié)。本書注重原理的講解與實(shí)踐,每一部分都 會有詳細(xì)的代碼解析,力爭用最少最精簡的代碼,幫助讀者構(gòu)建自己的容器。

本書的內(nèi)容主要分為“容器與開發(fā)語言” “基礎(chǔ)技術(shù)” “構(gòu)造容器” “構(gòu)造鏡像” “構(gòu)造 容器進(jìn)階” “容器網(wǎng)絡(luò)” “高級實(shí)踐” 這7章。

容器與開發(fā)語言:主要介紹 Docker 的基本功能和特點(diǎn),并且對后面即將使用的 Go 語言 做一個(gè)簡單的介紹。

基礎(chǔ)技術(shù):主要介紹實(shí)現(xiàn)容器的底層技術(shù),如Namespace、Cgroups、Union File System。 每一小節(jié)都會有文字性介紹,并且附有一個(gè)簡短的小例子程序,介紹在容器上是如何使 用這項(xiàng)技術(shù)的,方便讀者清晰地理解各個(gè)技術(shù)點(diǎn)在容器上的作用。

構(gòu)造容器:使用前面兩章介紹的基礎(chǔ)技術(shù),構(gòu)造一個(gè)最簡單的容器環(huán)境,會將整體實(shí)現(xiàn) 細(xì)節(jié)及代碼解析一點(diǎn)點(diǎn)展現(xiàn),直接使用前面介紹的基礎(chǔ)技術(shù),從而更加有實(shí)戰(zhàn)感。

構(gòu)造鏡像: 使用 2.3 節(jié)介紹的分層文件系統(tǒng)技術(shù),構(gòu)建一個(gè)簡單的容器鏡像,體現(xiàn)容器 鏡像的分層思想。

構(gòu)造容器進(jìn)階:更加貼近真實(shí)的容器實(shí)現(xiàn),在原來的基礎(chǔ)上,增加更豐富的功能。通過 這一章的學(xué)習(xí),讀者可以更好地了解各種技術(shù)是如何整合在一起,去實(shí)現(xiàn)容器整體功能 的。

容器網(wǎng)絡(luò): 除了實(shí)現(xiàn)一個(gè)容器環(huán)境之外,這一章還會講解如何使自己的容器和宿主機(jī)通 信,以及如何讓不同的容器之間進(jìn)行通信,更加貼近真實(shí)環(huán)境。

高級實(shí)踐: 使用自己編寫的容器,運(yùn)行一些通用程序,驗(yàn)證容器的可用性。此外,本章 還介紹了目前Docker 使用的容器運(yùn)行引擎,以及目前容器運(yùn)行態(tài)引擎的概況。

精彩書摘

《自己動手寫Docker》書摘之一: Linux Namespace

《自己動手寫Docker》書摘之二: Linux Cgroups

《自己動手寫Docker》書摘之三: Linux UnionFS

《自己動手寫Docker》書摘之四: 構(gòu)造簡單容器

《自己動手寫Docker》書摘之五: 增加容器資源限制

原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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