Docker 實踐 Docker实践

[美] 伊恩·米爾 艾丹·霍布森·塞耶斯

買這商品的人也買了...

商品描述

《Docker實踐》由淺入深地講解了Docker的相關內容,涵蓋從開發環境到DevOps流水線,再一路到生產環境的整個落地過程以及相關的實用技巧。書中介紹Docker的核心概念和架構,以及將Docker和開發環境有機、高效地結合起來的方法,包括用作輕量級的虛擬機以及構建和宿主機編排、配置管理、精簡鏡像等。不僅如此,本書還通過“問題/解決方案/討論”的形式,將“Docker如何融入DevOps流水線”“如何在生產環境落地”等一系列難題拆解成101個相關的實用技巧,為讀者提供解決方案以及一些細節和技巧方面的實踐經驗。閱讀本書,讀者將學到的不只是Docker,還包括持續集成、持續交付、構建和鏡像管理、容器編排等相關領域的一線生產經驗。本書編寫時一些案例參考的Docker版本是Docker 1.9。
《Docker實踐》要求讀者具備一定的容器管理和運維的基礎知識,適合想要將Docker投入實踐的相關技術人員閱讀,尤其適合具有中 高 級DevOps和運維背景的讀者閱讀。

作者簡介

[美]伊恩·米爾(Ian Miell)艾丹·霍布森·塞耶斯(Aidan Hobson Sayers) 譯者:吳佳興、梁曉勇、黃博文、楊銳

伊恩·米爾(Ian Miell)和艾丹·霍布森·塞耶斯(Aidan HobsonSayers)對Docker有所貢獻,並且在大規模環境裡構建和維護基於Docker的基礎設施方面有豐富的經驗。

目錄大綱

第一部分Docker基礎
第1章Docker初探3 
1.1 Docker是什麼以及為什麼用Docker 4 
1.1.1 Docker是什麼4 
1.1.2 Docker有什麼好處6 
1.1.3關鍵的概念8 
1.2構建一個Docker應用程序10 
1.2. 1創建新的Docker鏡像的方式11 
1.2.2編寫一個Dockerfile 11 
1.2.3構建一個Docker鏡像12 
1.2.4運行一個Docker容器14 
1.2.5 Docker分層16 
1.3小結17 

第2章理解Docker——深入引擎室18 
2.1 Docker的架構18 
2.2 Docker守護進程20 
技巧1向世界開放Docker守護進程20 
技巧2以守護進程方式運行容器22 
技巧3將Docker移動到不同分區24 
2.3 Docker客戶端25 
技巧4使用socat監控Docker API流量25 
技巧5使用端口連接容器28 
技巧6鏈接容器實現端口隔離29 
技巧7在瀏覽器中使用Docker 31 
2.4 Docker註冊中心33
技巧8建立一個本地Docker註冊中心34 
2.5 Docker Hub 34 
技巧9查找並運行一個Docker鏡像35 
2.6小結37 

第二部分Docker與開發
第3章將Docker用作輕量級虛擬機41 
3.1從虛擬機到容器42 
技巧10將虛擬機轉換為容器42 
技巧11類宿主機容器44 
技巧12將一個系統拆成微服務容器46 
3.2管理容器的服務49 
技巧13管理容器內服務的啟動50 
3.3保存和還原工作成果52 
技巧14在開發中“保存遊戲”的方式52 
技巧15給Docker打標籤54 
技巧16在Docker Hub上分享鏡像56 
技巧17在構建時指向特定的鏡像58 
3.4進程即環境59 
技巧18在開發中“保存遊戲”的方式59 
3.5小結61 

第4章Docker日常62 
4.1卷——持久化問題62 
技巧19 Docker卷——持久化的問題63 
技巧20通過BitTorrent Sync的分佈式捲64 
技巧21保留容器的bash歷史66 
技巧22數據容器68 
技巧23使用SSHFS掛載遠程卷70 
技巧24通過NFS共享數據72
技巧25開發工具容器75 
4.2運行容器76 
技巧26在Docker裡運行GUI 76 
技巧27檢查容器78 
技巧28乾淨地殺掉容器80 
技巧29使用Docker Machine來置備Docker宿主機81 
4.3構建鏡像84 
技巧30使用ADD將文件注入到鏡像85 
技巧31重新構建時不使用緩存87 
技巧32拆分緩存89 
4.4保持陣型90 
技巧33運行Docker時不加sudo 90 
技巧34清理容器91 
技巧35清理卷92 
技巧36解綁容器的同時不停掉它94 
技巧37使用DockerUI來管理Docker守護進程95 
技巧38為Docker鏡像生成一個依賴圖96 
技巧39直接操作——對容器執行命令97 
4.5小結99 

第5章配置管理——讓一切井然有序100 
5.1配置管理和Dockerfile 100 
技巧40使用ENTRYPOINT創建可靠的定制工具101 
技巧41在構建中指定版本來避免軟件包的漂移102 
技巧42用perl -p -i -e替換文本104 
技巧43鏡像的扁平化105 
技巧44用alien管理外來軟件包107
技巧45把鏡像逆向工程得到Dockerfile 109 
5.2傳統配置管理工具與Docker 112 
技巧46傳統方式:搭配make和Docker 112 
技巧47借助Chef Solo構建鏡像114 
技巧48從源到鏡像的構建118 
5.3小即是美123 
技巧49保持構建鏡像更小的Dockerfile技巧123 
技巧50讓鏡像變得更小的技巧126 
技巧51通過BusyBox和Alpine來精簡Docker鏡像128 
技巧52 Go模型的小容器129 
技巧53使用inotifywait給容器瘦身132 
技巧54大也可以美134 
5.4小結136
 
第三部分Docker與DevOps 
第6章持續集成:加快開發流水線139 
6.1 Docker Hub自動化構建139 
技巧55使用Docker Hub工作流140 
6.2更有效的構建143 
技巧56使用eatmydata為I/O密集型構建提速143 
技巧57設置一個軟件包緩存用於加快構建速度145 
技巧58在Docker內部運行Selenium測試147 
6.3容器化CI過程151 
技巧59包含一個複雜的開發環境151 
技巧60在一個Docker容器裡運行Jenkins主服務器156
技巧61使用Jenkins的Swarm插件擴展CI 158 
6.4小結161 

第7章持續交付:與Docker原則完美契合162 
7.1在CD流水線上與其他團隊互動163 
技巧62 Docker契約——減少摩擦163 
7.2推動Docker鏡像的部署165 
技巧63手動同步註冊中心鏡像165 
技巧64通過受限連接交付鏡像166 
技巧65以TAR文件方式共享Docker對象168 
7.3為不同環境配置鏡像170 
技巧66使用etcd通知容器170 
7.4升級運行中的容器172 
技巧67使用confd啟用零停機時間切換173 
7.5小結177
 
第8章網絡模擬:無痛的現實環境測試178 
8.1容器通信——超越手工鏈接178 
技巧68一個簡單的Docker Compose集群178 
技巧69一個使用Docker Compose的SQLite服務器182 
技巧70使用Resolvable通過DNS查找容器185 
8.2使用Docker來模擬真實世界的網絡188 
技巧71使用Comcast模擬有問題的網絡188 
技巧72使用Blockade模擬有問題的網絡191 
8.3 Docker和虛擬網絡194 
技巧73使用Weave建立一個基底 絡195
技巧74 Docker的網絡與服務功能198 
8.4小結201 

第四部分生產環境中的Docker 
第9章容器編排:管理多個Docker容器205 
9.1簡單的單台宿主機206 
技巧75使用systemd管理宿主機上的容器206 
技巧76使用systemd編排宿主機上的容器210 
9.2多宿主機Docker 212 
技巧77使用Helios手動管理多宿主機Docker 213 
技巧78基於Swarm的無縫Docker集群219 
技巧79使用Kubernetes集群222 
技巧80在Mesos上構建框架228 
技巧81使用Marathon細粒度管理Mesos 235 
9.3服務發現:我們有什麼238 
技巧82使用Consul來發現服務238 
技巧83使用Registrator進行自動化服務註冊246 
9.4小結248 

第10章Docker與安全249 
10.1 Docker訪問權限及其意味著什麼249 
10.2 Docker中的安全手段250 
技巧84限制能力251 
技巧85 Docker實例上的HTTP認證253 
技巧86保護Docker API 257 
10.3來自Docker以外的安全260
技巧87 OpenShift——一個應用程序平台即服務260 
技巧88使用安全選項269 
10.4小結275 

第11章一帆風順——生產環境中的Docker以及運維上的考量276 
11.1監控276 
技巧89記錄容器的日誌到宿主機的syslog 276 
技巧90把Docker日誌發送到宿主機的輸出系統279 
技巧91使用cAdvisor監控容器281 
11.2資源控制282 
技巧92限制容器可以運行的內核282 
技巧93給重要的容器更多CPU 283 
技巧94限制容器的內存使用285 
11.3 Docker的系統管理員用例286 
技巧95使用Docker來運行cron作業286 
技巧96通過“保存遊戲”的方法來備份289 
11.4小結291
 
第12章Docker生產環境實踐——應對各項挑戰292 
12.1性能——不能忽略宿主機292 
技巧97從容器訪問宿主機資源292 
技巧98 Device Mapper存儲驅動和默認的容器大小296 
12.2在容器出問題時——調試Docker 298 
技巧99使用nsenter調試容器的網絡298 
技巧100無須重新配置,使用tcpflow進行實 調試301 
技巧101調試在特定宿主機上出問題的容器302
12.3小結306 
附錄A安裝並使用Docker 307 
附錄B Docker配置311 
附錄C Vagrant 313