
陳顯鷺
通過講解Docker使用到的各種底層技術,例如Namespace、Cgroups等來自己一步步動手完成一個簡單版本的Docker。在自己動手的過程中,從而對Docker這個技術有一個整體、細緻的瞭解。能夠明白Docker的原理以及結構,從而加深對目前熾手可熱的Docker技術的理解,方便解決工作中使用Docker遇到的各種問題。
很短的一本書,其中還包含不少的代碼,所以大概1小時就能看完了;但是容器涉及的cgroups,namespace,volume和網絡等基本內容都包含了,還是比較全面的;對於通過實現一個引擎來學習容器,可以算是一個合格的入門書籍。
這本書可以手把手教你如何構建一個簡易容器引擎,將Docker依賴的核心技術拆解爲一個個可落地的開發任務。跟着書中步驟實現加深了對Linux內核特性的認知:通過 clone 系統調用創建帶namespace的進程,親手驗證了“容器是特殊進程”的本質;用cgroups編寫資源限制代碼,終於搞懂了 docker run -m 參數背後的內核機制;搭建簡易unionfs文件系統後,對鏡像的“分層存儲”與“寫時複製”有了直觀認知。 它的價值遠不止“學會寫Docker”。它更像一本“內核技術實踐指南”,通過容器這個具體場景,讓我們知其然更知其所以然。
一本小冊子簡要介紹了實現容器技術的關鍵技術:NameSpace,CGroups,UnionFS,Linux Virtual Net Device以及Roofs。帶領讀者實現一個可運行的容器Demo。對於想理解容器底層技術的朋友,是一本不錯的參考資料。
雖然是讓自己動手寫 Docker,但更像是爲已經在使用Docker並且想要了解下它的原理的用戶準備的,內容不深,不過一些關鍵點都介紹了。 1. 明白了鏡像這個神奇的東西的基本原理,以前知道它是基於文件系統搞的,但本書結合實例給出了更細節的解釋。 2. 對於容器,以前知道是基於namespace,cgroup來實現的,但怎麼具體怎麼用不清楚,網上的資料也不具體,本書倒是給出了具體的實操。 3. 網絡這塊應該確實比較複雜,概念比較多,不好理解,不過大體的思路是懂了。 4. 最後關於containerd, cri, OCI, runc等概念介紹很不錯。 不過這本書寫作時間比較早了,Github上面的代碼很多年都沒更新了,看issue區反應,如果讀者是現在看到本書並且想跑起來應該需要解決不少問題。
瞭解容器原理的很好入門資料,也是對linux lernel關鍵概念namespace cgroup的很好實例模板
本書已經有近十年了,現在podman可能是對於個人更合適的oci標準的容器方案。 但本書實際上作爲一個容器的實現教學而不是所謂docker的實現教學,在當前依然很有價值。 我對於實現docker沒有什麼興趣,對於golang更沒有興趣,但本書依然對我展現了在linux上通過其提供的namespace和cgroups機制實現容器的思路以及與linux的關係,這是較爲珍貴的體驗。 對於有志於體驗容器設計的書友,我的建議是直接拉取該書倉庫,用AI跑一遍,對照書的文本進行學習得了。
一本很薄的小冊子,花了2天時間翻完,以爲會很晦澀畢竟涉及到具體的代碼實現 ,但是實際閱讀體驗很絲滑。 本書可以視作學習完容器網絡和容器基礎之後的進階讀物,結構循序漸進。缺點在於官方倉庫缺乏維護,和正文結構不符,但是並不影響理解。 在golang系統調用,cgroup,容器存儲,容器網絡的具體編碼和設計部分收穫頗多,有一種把docker掰碎了看也不過如此的感覺,非常推薦的作品。
不錯深入淺出,就是後面代碼有點多,看煩了
寫的很好。深入容器的具體原理。
草草翻過,書雖然簡短,但書中沒有啥好的比喻,沒啥金句,感覺也就沒有啥收穫