標籤:

學習Docker哪本書最好?


在此推薦一本最近剛剛出版的Docker學習書籍:《自己動手寫Docker》

本書在詳細分析Docker所依賴的技術棧的基礎上,一步一步地通過代碼實例,讓讀者可以自己循序漸進地用Go語言構建出一個容器的引擎。不同於其他Docker原理介紹或代碼剖析的書籍,《自己動手寫Docker》旨在提供給讀者一條動手路線,一步一步地實現Docker的隔離性,構建Docker的鏡像、容器的生命周期及Docker的網路等。

作者簡介

(點擊作者姓名可查看個人主頁)

陳顯鷺(花名:遙鷺)-阿里雲高級研發工程師

對Docker有深入研究,是Docker多個項目的Contributor,專註於容器技術的編排與基礎環境研究。愛好折騰源代碼,熱愛開源文化並積极參与社區開源項目的研發。

王炳燊(花名:溪恆)-阿里雲研發工程師

具有豐富的Linux開發經驗,對Docker有深入研究,多次提交Docker Patch。目前從事阿里雲容器服務網路方案的設計與實現,專註於容器技術的基礎環境研究。

秦妤嘉(花名:嫀嫀)-阿里雲高級研發工程師

DevOps工程師,有豐富的容器化持續集成和持續交付開發實戰經驗,進行過Jenkins源碼分析改造和Jenkins插件開發。目前從事阿里雲容器服務持續集成和持續交付方案的設計和實現。

為什麼要寫這本書

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學習的問題可以在原文評論中提問,點擊到原文:Docker入門必備書籍:《自己動手寫Docker》 - 知乎專欄


我是一個docker愛好者,玩了大概一年多了吧,總結3點:1.知識源於實踐,動手安裝,把基礎命令敲幾遍是最靠譜的方法!

2.新的事物發展的真的很快,書本上的只是簡單介紹,不會有很好的實踐經驗的,最快的學習途徑是看官方文檔安裝,寫dockerfile,製作鏡像,把基礎服務裝進docker等等~官方文檔,官方文檔,官方文檔,重要的事情說三遍~

3.看牛人博客,牛人博客一般都是講的核心技術或者親身實踐,比如coolshell博客等。

4.最快的學習方法是去教別人,建議多去dockerone社區參加一些問答,如果有興趣可以去翻譯一些官方博客~乾貨 | Yelp是如何使用Docker的?

5.多去參加一些線下沙龍活動,比如高效運維的活動,dockerone的活動,infoq的活動等~結識一些好基友~

6.不建議買書,因為買了也不一定看~不知道會不會戳中某些人的痛~反正我是看不進去~


我一直都不贊成看什麼入門書籍的,沒有動手做過,是記不牢的啊。而且新技術,現在出的書籍肯定跟不上變化。

你可以試一下,自己寫dockerfile,把LNMP的各個部件image 本地 build好

然後連起來,再把它們push到私人或者公有的倉庫上。

找一台機子,再把他們pull下來,連起來,體驗一次完整的過程。


《Docker入門與實戰》《Docker第一本書》都非常不錯,最主要是在工作或學習中要去實踐。基於Docker的CI/CD已經在2年前就跑線上環境了,目前已經集成了堡壘機、日誌平台、監控平台,實現服務註冊與發現,運維很大工作實現自動化。在學習過程有問題,可以私信給我,我願幫助快速掌握Docker。


《第一本docker書》是我接觸的第一本docker類書籍,感謝@upyun公司提供的免費書籍採購。開始也會有種沒必要看書的錯覺,因為現在網上的資源的很多。而且docker使用也是十分通俗易懂的。但是細細看了下《第一本docker書》感覺受益匪淺。一方面是溫故,另一方面是知新。很多時候,我很容易滿足現在的狀況,可是書中往往會提出一些更為巧妙的做法。最近在調研docker中構建CI,《第一本docker書》中的Jenkins CI環境,一種很巧妙的方式,甚是佩服。總之,書的好處在於幫你整合了些作者認為十分好的想法,當然如果你擁有更好的方式去接觸知識,自是再好不過。


個人覺得看書得看你現在處於什麼水平,不同水平看不懂的書籍,如果你處於菜鳥級別,剛接觸docker,可以找一些比較基礎技術知識的書籍,我在群里看到精靈雲創始人說正在撰寫《docker,從入門到精通》,這本書籍就非常適用於菜鳥級別的書,不過這本書的作者還在撰寫完善當中,後面就會發表出來,可以關注一下:http://archive.ghostcloud.cn/docker%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A-%E5%85%A5%E9%97%A8%E7%AF%87.pdf;

還有看書是一方面,實際操作也非常重要,看書增加理論知識,理論知識結合實際操作,這樣就來的更快,讀書百遍其義自見。


前一陣玩Docker,當時就兩本中文書籍:Docker技術入門與實戰+第一本Docker書,都買了看了一遍。

Docker技術入門與實戰,這本書的內容有點水,不少內容是前後重複,有些命令還有錯誤。但是裡面的例子也是不錯的,照著執行下,會有些感覺。

第一本Docker書,這本書應該是很熟悉的人寫的,裡面有不少網上文章沒有提到的技巧,值得一讀。

和網上的教程、攻略相比,買本書扎紮實實的看一遍,還是挺好的。

有了這個基礎知識,再看網文,可以快速抓到核心要點。

但是這些仍然不夠,Docker的源碼推薦要讀。

其實Docker源碼還是挺簡單粗暴的,值得一看。


推薦你看一下電子書:《Docker入門實戰》


一句話,整就牛,有問題找stackoverflow


學習 Docker 的前提是你要對 Linux 有一定了解,常用指令可以熟練使用。

然後入門書籍選 《第一本Docker書》作者原先是 Docker 團隊的成員,現在為 Docker 團隊的顧問。

然後再去看一些 Docker 的基礎原理(NameSpace、Cgroup、AUFS、DeviceMapper)加深對Docker實現原理的理解,個人推薦陳皓的幾篇博客,對 Docker 的基礎知識講解的非常透徹:

Docker基礎技術:Linux Namespace(上) | | 酷 殼 - CoolShell

Docker基礎技術:Linux Namespace(下) | | 酷 殼 - CoolShell

Docker基礎技術:Linux CGroup | | 酷 殼 - CoolShell

Docker基礎技術:AUFS | | 酷 殼 - CoolShell

Docker基礎技術:DeviceMapper | | 酷 殼 - CoolShell


學習Docker關鍵是實操,線上教程很多,買書看理論不如把時間花在實踐練習上。

實驗樓設計了1門Docker實戰課程,有興趣可以關注下,15個動手實驗+在線練習環境,每個實驗需要1-3小時的動手操作時間,直接在線實操,內容涵蓋Docker,DockerFile,Compose,Swarm,Kubernate等技術點。

Docker - 動手實戰學Docker

實驗列表:

  1. Docker 概念及基本用法
  2. Docker 容器管理
  3. Docker 數據卷管理
  4. Docker 網路管理
  5. 編寫 DockerFile
  6. Docker運行Web應用
  7. Docker運行MongoDB及Redis
  8. Docker運行資料庫應用
  9. 搭建自己的Docker Register
  10. Docker 安全
  11. Docker Compose項目
  12. Docker Swarm項目
  13. Kubernate
  14. Docker API
  15. 基於Docker API開發應用


很早聽過docker,這兩天要部署一個開源的看板應用wekan,用到了docker,所以想順帶深入學習一下docker。

首先是思考docker是什麼

開源的應用容器引擎,快速理解它的概念可以用隱喻:「集中箱」,作為20世紀最重要的發明之一,對世界的影響是巨大的,參考集裝箱改變世界 (豆瓣)。docker就是集裝箱,可以實現虛擬機隔離應用環境的功能,開銷比虛擬機小,能把開發環境之間封裝成鏡像,然後直接部署到生產環境,速度快且不容易出問題。如何通俗解釋Docker是什麼?

為什麼要用docker,它解決了什麼問題,好處是什麼?

docker解決了應用隔離、移植、伺服器資源充分利用及高效運維等問題,很多個應用不隔離直接裝在伺服器上不但容易出現資源衝突如埠衝突、內存資源搶佔等問題也可能出現不可知的安全問題;如果在一台伺服器上裝多個虛擬機來部署不同應用,雖能避免問題,但又太耗資源,而Docker在應用隔離安全性與資源使用效率方面取得了較好的平衡。

docker改變了運維世界,這句話是從群體角度來說的,像mysql,python這樣的使用群體眾多的應用,以及會經常遷移,變動,重新部署的應用,docker化之後,整個群體所節省的時間,是非常巨大的。也就是說,docker並不能部署的工作「減少為0」,比較好的情況下是「基本減少為1」,因為無論如何都需要把應用及所在環境構建一遍,就像集裝箱雖然減少了運輸途中的搬運過程,但是把貨物搬進集裝箱這一次操作是難以避免的,但這可以成為「一次構建,到處交付」的基礎。你第一次構建自己的鏡像時,就像往集裝箱里裝東西是類似的,需要和直接在機器上部署差不多的工作量。這個時候,docker的效率提升是很小的。Docker 有什麼優勢? - 小狐濡尾的回答

如何學習docker

1、找好的書籍或博文系統學習一下

Docker為什麼

archive.ghostcloud.cn 的頁面

Docker專題_Docker技術入門與實戰_Docker應用_Docker安全_Docker網路模型_Docker代碼分析_Docker命令

http://www.infoq.com/cn/author/%E5%AD%99%E5%AE%8F%E4%BA%AE#

2、自己安裝搭建環境,多動手嘗試,只有自己用過才能更深入理解

看了docker好處後,迫不及待想嘗試一下,因為平時工作用的都是windows環境,自然選擇裝windows版本,Docker | Docker,剛在這裡下載後在自己win10上裝了一下,安裝很快,但裝完提示要啟動虛擬化服務,自動重啟電腦,重啟後電腦cpu、內存、硬碟佔用率都很高,過一會兒docker安裝初始化後恢復正常。win上原生支持docker要win10以上版本才行,如果是win7 64位以上系統,可安裝docker toolbox,Docker Toolbox


前提是要懂Linux,Linux命令(1) - Demoso(呆萌搜)Linux命令(1) - Demoso(呆萌搜),然後看看電子書就可以了,重要的要動手實踐,剛剛有個列表

  • windows安裝 docker
  • Fedora 安裝 docker
  • Debian 安裝 docker
  • CRUX Linux 安裝 docker
  • Arch Linux 安裝 docker
  • Mac OS X 安裝 Docker
  • CentOS 安裝 docker
  • Red Hat 安裝 docker
  • Ubuntu 安裝 Docker
  • Docker 應用 amp;amp;quot;hello Worldamp;amp;quot;
  • 使用docker容器工作
  • 使用 Docker 鏡像
  • docker 連接容器
  • 管理容器數據
  • 使用Docker Hub
  • 【官方案例】Docker 中運行 MongoDB
  • 【官方案例】在Docker中運行PostgreSQL
  • 【官方案例】在Docker中使用Riak服務
  • 【官方案例】在Docker中運行SSH進程服務
  • 【官方案例】Docker中運行CouchDB服務
  • 【官方案例】在Docker中運行Apt-Cacher-ng服務
  • 使用docker第一步
  • 創建一個docker基本鏡像


Docker Documentation

慢慢來,把最左邊的欄目一條條的看完,實踐完。


Docker Hello World

Docker 容器使用 - Demoso(呆萌搜)

Docker 鏡像使用 - Demoso(呆萌搜)

Docker 容器連接 - Demoso(呆萌搜)


可以參考:https://github.com/veggiemonk/awesome-docker


第一本docker書

docker xxx(名字忘了,華為技術團隊出的)

docker docs(很重要,docker官方文檔非常好,難得的高質量文檔)


上面推薦的書籍不錯的 適合入門

未來manning系列會出一本

《Docker in Action》也是值得推薦的(目前已出了五章)

答主可以參考此書作者的最新博文(已譯)探索Docker本地橋接網路


《The Docker Book》,不過基本就是入門書籍,還沒有太深入的


The docker book。建議在官網買英文原版,然後這本書每次更新,作者都會給你發來新版的書,非常良心。


推薦閱讀:

學習docker要有什麼基礎?
DaoCloud、時速雲、靈雀雲這些Docker平台區別在哪裡?
如何學習、了解kubernetes?
如何評價 hyper_?
如何通俗解釋Docker是什麼?

TAG:Docker |