閱讀960 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《自己動手寫Docker》—— 導讀


圖書鏈接

為什麼要寫這本書

Docker 技術可謂是近年最火熱的技術之一,鋪天蓋地的技術論壇和各種講座,大家都在分享關於如何容器化及如何使用Docker優化自己運維和開發流程的經驗。隨著Docker技術的逐漸普及,使用Docker已經不再是一個難題。現在更加重要的是生產環境容器化的最佳實踐,另外就是容器的編排框架之爭。但是,對於技術人員來說,除去Docker 外表的繁華外,什麼是容器,容器到底是怎麼創建的,容器底層的技術探秘也是非常重要的。
我在2014年開始接觸 Docker,經曆了從最初的新奇—感歎竟然還有Docker 這樣的好工具,到逐漸熟悉Docker的各種功能,嚐試在生產環境中使用Docker技術的過程。但是,每每被人問到:“Docker技術到底是怎麼實現的呢?”我隻能粗粗淺淺地說:“Docker是使用Linux Kernel的Namespace 和 Cgroups實現的一種容器技術。”那麼,什麼是Namespace,什麼是Cgroups,Docker是怎麼使用它們的,容器到底是怎麼一步步被創建出來的?問到這些,我就會支支吾吾地不知所以。由此可見,了解容器技術的底層技術,然後明白它們是如何工作的,尤為重要,這些才是整個容器技術的基石,掌握了這些基石才能更加容易地向上攀登。
單單講解底層的技術實現細節和源碼解讀是很枯燥的一件事,一般來說很難有耐心去一點點細讀然後揣摩其中的奧妙,這樣囫圇吞棗地過一遍技術細節,作用不大。因此,便萌生了寫一本《自己動手寫Docker》這樣的書的想法。本書不去刻意講解容器技術的細節,用到什麼講解什麼,點到為止,更加細節的內容留給讀者自己探索。通過閱讀本書,可以一步步地去了解容器技術的實現細節,更可以跟著作者一步步地用自己的代碼去實現它。本書最大的樂趣莫過於用自己最新了解到的知識去動手實現自己的容器。由此可以進一步打開你進入容器技術社區的大門。 

本書的內容

本書的目的是去引導讀者通過學習容器技術的實現細節,一步步去構建一個簡單的容器。 從這個過程中,了解整個容器技術領域和實現細節。本書注重原理的講解與實踐,每一部分都 會有詳細的代碼解析,力爭用最少最精簡的代碼,幫助讀者構建自己的容器。 

本書的內容主要分為“容器與開發語言” “基礎技術” “構造容器” “構造鏡像” “構造 容器進階” “容器網絡” “高級實踐” 這7章。 

  • 容器與開發語言:主要介紹 Docker 的基本功能和特點,並且對後麵即將使用的 Go 語言 做一個簡單的介紹。
  • 基礎技術:主要介紹實現容器的底層技術,如Namespace、Cgroups、Union File System。 每一小節都會有文字性介紹,並且附有一個簡短的小例子程序,介紹在容器上是如何使 用這項技術的,方便讀者清晰地理解各個技術點在容器上的作用。
  • 構造容器:使用前麵兩章介紹的基礎技術,構造一個最簡單的容器環境,會將整體實現 細節及代碼解析一點點展現,直接使用前麵介紹的基礎技術,從而更加有實戰感。
  • 構造鏡像: 使用 2.3 節介紹的分層文件係統技術,構建一個簡單的容器鏡像,體現容器 鏡像的分層思想。
  • 構造容器進階:更加貼近真實的容器實現,在原來的基礎上,增加更豐富的功能。通過 這一章的學習,讀者可以更好地了解各種技術是如何整合在一起,去實現容器整體功能 的。
  • 容器網絡: 除了實現一個容器環境之外,這一章還會講解如何使自己的容器和宿主機通 信,以及如何讓不同的容器之間進行通信,更加貼近真實環境。
  • 高級實踐: 使用自己編寫的容器,運行一些通用程序,驗證容器的可用性。此外,本章 還介紹了目前Docker 使用的容器運行引擎,以及目前容器運行態引擎的概況。

讀書筆記

《自己動手寫Docker》書摘之一: Linux Namespace
《自己動手寫Docker》書摘之二: Linux Cgroups  
《自己動手寫Docker》書摘之三: Linux UnionFS  
《自己動手寫Docker》書摘之四: 構造簡單容器  
《自己動手寫Docker》書摘之五: 增加容器資源限製

最後更新:2017-06-26 15:32:59

  上一篇:go  《數據結構與抽象:Java語言描述(原書第4版)》一1.2 說明一個包
  下一篇:go  阿裏雲全球首批MVP楊繡專訪 - 技術要堅持刨根問底