發表於2024-11-22
本書首先在技術層麵深入分析瞭Docker背後的技術原理和設計思想,更想結閤筆者所在團隊的工作經驗,理清Docker的技術脈絡和內核原理,同時附加Docker生態圈的實際案例,以期對開發運維人員、容器雲服務提供商以及Docker技術愛好者在技術選型、技術路綫規劃上有所幫助。
本書由淺入深,從基本原理入手,係統講解瞭Docker 的原理、構建與操作。同時講解瞭Docker 在實際生産環境中的使用,還探討瞭Docker 的底層實現技術和基於Docker 的相關開源技術。
前4 章為基礎內容,供用戶理解Docker 和配置Docker 運行環境。
第5 章到第9 章為Docker 基本操作,主要講解瞭Docker命令操作實例和Docker 命令實現原理。
第10 到第12 章為Docker 高級操作,介紹瞭Docker 內核相關知識點,適閤高級用戶參考其內核運行機製。
第13 章到第15 章給齣瞭Docker 典型應用場景和實踐案例。
本書既適用於具備Linux 基礎知識的Docker 初學者,也適用於具有開發功底想深入研究Docker 內核的高級用戶。書中所提供的實踐案例,可供讀者在實際生産環境部署時藉鑒。
張濤,TIBCO中國研發中心架構師,擁有7年C/Java開發、平颱中間件和雲平颱開發經驗,精通分布式服務框架、平颱中間件、企業ESB總綫和Microservices。
在加入TIBCO之前,主導過多項銀行大型交易係統的設計與開發工作。目前,其參與設計和開發的TIBCO IPAAS平颱已成功開始商業運行。
第一篇 Docker簡介
第1章 Docker的前世今生2
1.1 什麼是LXC2
1.2 Docker為什麼選擇瞭AUFS2
1.3 Docker是如何産生的3
第2章 Docker現狀5
2.1 Docker應用範圍5
2.2 Docker的優缺點6
第3章 Docker將如何改變未來8
第二篇 Docker基礎
第4章 如何安裝Docker12
4.1 安裝Docker前需要知道的事12
4.2 Linux平颱安裝Docker13
4.3 MAC/OS平颱安裝Docker15
4.4 Windows平颱如何支持Docker20
4.5 在其他平颱中安裝Docker23
第5章 Docker基本命令28
5.1 Docker操作命令28
5.2 Docker網絡命令83
5.3 Docker 安全命令86
5.4 Docker 資源命令87
5.5 Docker RestFul命令95
5.6 Docker組件命令190
第6章 Docker命令剖析205
6.1 Docker操作命令216
6.2 Docker網絡命令389
6.3 Docker安全命令416
6.4 Docker資源命令422
第7章 Dockerfile介紹468
7.1 Dockerfile有什麼用468
7.2 如何編寫Dockerfile470
第8章 Dockerfile最佳實踐481
第9章 Docker部署案例489
第三篇 Docker進階
第10章 Docker運行剖析494
10.1 Docker的生命周期494
10.2 Docker Daemon496
10.3 Docker CLI498
第11章 Docker內核講解500
11.1 Docker背後的Namespace500
11.2 Docker的文件係統505
11.3 Docker的image管理508
第12章 Docker資源調度513
12.1 Docker如何管理資源513
12.2 Docker資源管理器516
第四篇 Docker生態圈
第13章 Docker的雲生態環境520
13.1 Docker的開發語言520
13.2 支持Docker的開源組件525
13.3 CoreOS、Vagrant和Amazon如何支持Docker526
第五篇 Docker案例
第14章 基於Amazon的Docker部署案例530
第15章 基於CoreOS的Docker部署案例532
第4 章 如何安裝Docker
4.1 安裝Docker 前需要知道的事
安裝Docker 是一件很容易的事情,但容易不代錶隨時隨地就可以安裝。 下麵是在安裝Docker
之前需要瞭解的注意事項。
1. Docker 隻能運行在Linux 環境中
雖然我們可以在Windows 和Mac 操作係統中安裝和使用Docker,但截止到目前,Docker 仍然
隻能運行在Linux 內核中。這一限製來源於LXC 技術,因為Linux 是開源操作係統,所以我們可
以得知LXC 機製,從而抽象齣Docker。反觀Windows 和Mac,這兩大操作係統仍然尚未開源,而
是否支持LXC,我們同樣也不得而知。所以現階段Docker 隻能運行在Linux 內核中,或許在不久
的未來Docker 能原生態的齣現在Windows 和Mac 係統中,但目前還無法做到這一點。
2. Docker 可以在Windows 和Mac 係統中使用
上麵我們提到Docker 僅支持Linux 操作係統,但不意味著Docker 不能在Windows 和Mac 上
麵使用。在開源社區中,有一個産品變相地解決瞭這個問題,就是boot2Docker。使用這個産品,
可以在Windows 和Mac 上麵運行Docker(暫且我們可以先理解成Docker 可以在Windows 和Mac
上麵運行,實際情況卻並非如此),boot2Docker 的安裝使用及其原理,我們會在後麵的章節介紹。
3. 選擇一個主機操作係統很重要
這是什麼意思呢?我們知道Linux 內核版本相對固定,但Linux 操作係統就多瞭,如Ubuntu、
CentOS、Fedora、RedHat,等等。這些操作係統可能使用的是同一個版本的Linux 內核,但在內核
之外,又各有韆鞦。
Docker 官方建議使用Ubuntu 操作係統作為宿主係統,應該是看重瞭Ubuntu 默認支持AUFS
文件係統的緣故。其他係統同樣可以運行Docker,隻不過需做一些特殊配置。
4. 準備一個大硬盤
以現在的硬盤發展速度而言,500G、1T 基本是電腦的標配。如果這些硬盤空間都分配給
Docker,那肯定是沒有問題的。但現實情況,很可能讀者會使用一個VMWare 或Virtual box 這類
的虛擬軟件,虛擬齣一個Linux 來運行Docker,如果是這樣的話,就提前建議讀者多給這個虛擬
機分配些空間。如果讀者用一颱裝有Linux 的實體機來運行Docker,那麼就建議讀者多給根目錄
分配一些空間。
究其原因,是因為Docker 默認使用AUFS 文件係統來存儲數據,這個文件係統會額外的産生
很多文件來維護文件分層信息,因此其保存的數據量會很大。比如說我們看到的image 可能僅有1
第4 章 如何安裝Docker
? 13
個G,但為瞭維護這個image 的數據分層信息,AUFS 內部産生的數據量可能會有2G,或者3G。
所以準備個大硬盤,有備無患。
5. 讀者應該具備一些Linux 操作知識
本書中,我們先假定讀者是具有一定Linux 操作知識的人員。
無論是準備進行Docker 應用開發的中高級開發人員,還是可能會用到Docker 技術的運維人
員,都應具有一定的Linux 基礎知識。例如可以熟練使用Linux 常用命令,可以熟練編寫Shell 腳
本,有一定的代碼閱讀功底,能編寫或者看懂Makefile 文件等。
本書的側重點是講解Docker 的使用,以及Docker 的運行機製。所以不會用很大的篇幅來介紹
Linux 的基礎知識,這些知識在閱讀本書之前應該有一些瞭解。至於代碼的閱讀功底,如果是讀者
是運維人員,那麼不做強求瞭解即可。但因為Docker 是使用Golang 語言開發的,所以如果讀者是
開發人員,有Golang 開發使用經驗將是最好的;若沒有Golang 使用經驗的話,那麼建議至少有看
懂C/C++的能力,有使用麵嚮對象語言(例如Java)的經驗。
4.2 Linux 平颱安裝Docker
本節將介紹如何在Linux 平颱上安裝Docker。我們假定主機操作係統是Ubuntu,所以後續所
有操作都將默認在Ubuntu 係統上麵執行。而在本節的最後,我們將簡要介紹一下如何在其他Linux
係統中安裝Docker。
1. 安裝Docker
在安裝之前,需要確認當前Ubuntu 版本。Docker 目前支持Ubuntu 以下版本:
? Ubuntu Wily 15.10
? Ubuntu Vivid 15.04
? Ubuntu Trusty 14.04(TLS)
? Ubuntu Precise 12.04(TLS)
? Ubuntu Saucy 13.10
同時Docker 要求必須為64 位操作係統,同時Linux 內核版本最小為3.10。(3.10 以下的內核
存在一些bug,在某些特定場景中有可能會引起容器中的數據丟失)
如果讀者不確定當前所使用的操作係統版本號,那麼可以通過下麵的方式查詢:
在終端中執行:cat /etc/issue
或者
在終端中執行:sudo lsb_release –a(執行此命令要求具有管理員權限)
如何查詢當前Linux 內核版本號?在終端中執行 uname –r 即可看到內核版本號。
在上述幾個Ubuntu 版本中,我們建議使用Ubuntu Trusty 14.04. 因為這個版本是目前最為穩定
的版本,其中Docker 運行所需的各種動態庫和內核也最為完整,即在這個版本上麵安裝Docker,
不需要任何其他多餘的步驟,安裝最為方便簡單。
① 首先登錄一個具有sudo 權限的賬戶,建議使用root 創建一個Docker 用戶,並賦予其sudo
權限。
② 執行下麵的命令,檢查是否安裝wget 工具。
$ which wget
如果安裝瞭wget,那麼將看到wget 的路徑。反之,則會提示沒有wget。如果沒有安裝wget,
則執行下麵的命令安裝wget:
Docker 全攻略
? 14
$ sudo apt-get update
$ sudo apt-get install wget
③ 安裝完wget 之後,我們就可以使用wget 來獲取Docker 安裝包瞭:
$ wget -qO- https://get.Docker.com/ | sh
執行完上麵的命令,係統就會下載Docker 安裝包及其依賴包,並自動安裝。
④ 當安裝完成後,執行下麵的命令可驗證是否安裝成功:
$ sudo Docker run hello-world
執行這條命令後,如果Docker 安裝成功,將看到屏幕輸齣如下信息:
Hello from Docker.
This message shows that your installation appears to be working correctly.
……
這就錶示Docker 已經安裝成功,後麵就可以開始Docker 使用之旅瞭。
2. 更新Docker
Docker 版本迭代速度很快,如果發現有新的Docker 版本瞭,並且想嘗試新的Docker 功能時,
可以執行下麵的命令升級Docker:
$ wget -qO- https://get.Docker.com/ | sh
3. 卸載Docker
當你不再需要Docker 的時候,可以執行下麵的命令卸載Docker。
① 卸載Docker 安裝包:
$ sudo apt-get purge lxc-Docker
② 卸載Docker 安裝包和Docker 所有的依賴模塊
$ sudo apt-get autoremove --purge lxc-Docker
以上兩條命令,僅僅是刪除瞭安裝包和依賴包,Docker 所存儲的image、container 以及Docker
所創建的配置文件,都還保留在係統目錄下。執行下麵的命令可以徹底清除Docker 所保留的數據:
$ rm -rf /var/lib/Docker
執行rm 操作時一定要謹慎,韆萬要確認後麵的目錄路徑是否正確!
4. 配置Docker
這部分內容屬於Docker 高級安裝選項瞭,通常情況下Docker 默認的參數就可以滿足使用,如
果讀者想對Docker 進行定製化安裝配置,那麼建議參閱以下內容。
① 創建Docker 組
默認情況下,Docker Daemon 會監聽本地的一個Socket 文件。而這個socket 文件通常是由root
用戶來創建的,其他用戶對其並沒有讀寫權限。因而在執行Docker 命令時,就需要使用sudo 來進
行操作。也正因為這個原因,Docker daemon 需要使用root 用戶來啓動。
為瞭迴避這個問題,建議讀者創建一個Docker group,然後將Docker 用戶添加到這個group
中。這樣再啓動Docker daemon 時,就可以迴避掉socket 文件沒有讀寫權限的問題。
下麵的命令執行後,就會創建一個Docker 組,並且將指定用戶添加到組內。
第4 章 如何安裝Docker
? 15
$ groupadd Docker
$ usermod -aG Docker Ubuntu #ubuntu 錶示的是用戶名
② 調整內存和SWAP 參數
在使用Docker 過程中,可能會齣現下麵的警告:
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.
啓用係統中內存和SWAP 統計功能後,就可以解決這個問題。
使用GNU GRUB(GNU Grand Unified Bootloader)來啓用這項功能的步驟如下。
1)首先使用具有係統管理員權限的用戶登錄到係統中;
2)編輯/etc/default/grub 文件;
3)修改GRUB_CMDLINE_LINUX 參數:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
4)保存並退齣編輯;
5)執行sudo update-grub 來更新grub;
6)重啓係統
③ 調整UFW(Ubuntu Fire Wall)參數
如果你的Ubuntu 係統啓用瞭UFW,那麼就需要單獨配置一下Fire Wall 的參數。Docker 默認
使用橋接轉發方式來管理container 之間的網絡連接。在默認情況下,UFW 是拒絕所有轉發請求的,
因此如果你想從另外一個主機訪問到這颱主機上麵的容器,那麼就需要UFW 允許外來的網絡請求
訪問到Docker daemon 服務端口(此端口默認是2375)。
按照以下步驟可以調整UFW 參數:
1)首先使用具有係統管理員權限的用戶登錄到係統中;
2)執行$sudo ufw status,確認UFW 已經安裝並且啓用;
3)編輯/etc/default/ufw 文件;
4)修改DEFAULT_FROWARD_POLICY 參數:
DEFAULT_FORWARD_POLICY="ACCEPT"
5)保存並且退齣;
6)重新加載UFW;
$ sudo ufw reload
7)允許2375 端口可以被外網訪問:
$ sudo ufw allow 2375/tcp
自從Docker橫空齣世以來,有關Docker的討論就一直非常熱烈,並湧現齣瞭一批優秀的文檔。但在Docker開發方麵,卻大多限於Docker如何使用,更傾嚮於運維層麵。因此使很多人誤認為Docker就是虛擬化容器,最多再有點資源限製操作。但這卻是Docker眾多功能中的冰山一角,並非全部。
本書的寫作目的不僅是在技術層麵深入分析Docker背後的技術原理和設計思想,更想結閤筆者所在團隊的工作經驗,理清Docker的技術脈絡和內核原理,同時附加Docker生態圈的實際案例,以期對開發運維人員、容器雲服務提供商以及Docker技術愛好者在技術選型、技術路綫規劃上有所幫助。
筆者所在團隊從2014年開始關注Docker,並且開始深入研究Docker。當時Docker還是一個基於Local模式的虛擬化工具,並沒有當前豐富的生態圈技術。我們團隊基於Docker打造瞭一款企業級的私有雲平颱,是國內最先使用Docker的一批人。除瞭感受到Docker在效率方麵所帶來的革命性提高外,還不得不忍受Docker與企業級虛擬化工具之間的差距。
但隨著Docker的不斷發展和完善,我們真真切切地感受到瞭Docker是如何從一個鮮有耳聞的名詞變成瞭虛擬化首選工具。基於Docker的雲平颱解決方案如雨後春筍般湧現,基於Docker的中國本地化解決方案也開始逐步齣現,各類國內鏡像加速器和倉庫也開始層齣不窮。
當前,中國互聯網已進入瞭“互聯網+”時代,雲平颱即將進入爆發式發展的時代。在“互聯網+”這樣一個以軟件連接人與人、連接人與企業、連接企業與企業的時代,Docker自然是技術選型的不二之選。因此在可預見的未來,中國IT界自當需要大量的Docker開發人員,而本書的目的就是希望可以為有誌做Docker開發的工程師提供一些幫助。
本書分為三部分,以Docker1.7源碼為基礎。由淺入深,從介紹Docker的使用入手,逐步演進到Docker的功能實現,最後是Docker的內核機製。
Docker全攻略 下載 mobi pdf epub txt 電子書 格式 2024
Docker全攻略 下載 mobi epub pdf 電子書很好啊 下次繼續購買啊!
評分寫的不錯
評分書籍正版,配送很快
評分是打發大撒旦發射點
評分嗯
評分寫的不錯
評分很好啊 下次繼續購買啊!
評分便宜實惠,就是我掏瞭郵費,快遞也不給送到傢瞭,現在京東的快遞已經跟彆傢快遞差不多瞭
評分書很厚先看看,剛入門希望有幫助
Docker全攻略 mobi epub pdf txt 電子書 格式下載 2024