Docker容器與容器雲(第2版)
內容描述
<內容簡介>
本書根據Docker 1.10版和Kubernetes 1.2版對第1版進行了全面更新,從實踐者的角度出發,以Docker和Kubernetes為重點,沿著“基本用法介紹”到“核心原理解讀”到“高級實踐技巧”的思路,一本書講透當前主流的容器和容器雲技術,有助於讀者在實際場景中利用Docker容器和容器雲解決問題並啟發新的思考。全書包括兩部分,首部分深入解讀Docker容器技術,包括Docker架構與設計、核心源碼解讀和高級實踐技巧;第二部分歸納和比較了三類基於Docker的主流容器雲項目,包括專註Docker容器編排與部署的容器雲、專註應用支撐的容器雲以及一切皆容器的Kubernetes,進而詳細解讀了Kubernetes核心源碼的設計與實現,介紹了幾種典型場景下的Kubernetes實踐。
本書適用於有一定Docker基礎的開發者、架構師、IT專業學生以及探索基於Docker構建雲計算平臺的技術人員,也非常適合作為高校教材或培訓資料。
<章節目錄>
第一部分Docker深入解讀
第1章從容器到容器雲2
1.1雲計算平臺2
1.2容器,新的革命3
1.3進化:從容器到容器雲7
第2章Docker基礎8
2.1 Docker的安裝8
2.2 Docker操作參數解讀9
2.3搭建你的第一個Docker應用棧16
2.3.1 Docker集群部署16
2.3.2第一個Hello World 17
2.3.3開發、測試和發布一體化27
第3章Docker核心原理解讀28
3.1 Docker背後的內核知識28
3.1.1 namespace資源隔離28
3.1.2 cgroups資源限制45
3.2 Docker架構概覽53
3.2.1 Docker daemon 54
3.2.2 Docker client 54
3.2.3鏡像管理54
3.2.4 execdriver、volumedriver、 graphdriver 55
3.2.5 network 55
3.3 client和daemon 56
3.3.1 client模式56
3.3.2 daemon模式58
3.3.3從client到daemon 64
3.4 libcontainer 67
3.4.1 libcontainer的工作方式69
3.4.2 libcontainer實現原理70
3.4.3使用runC與libcontainer進行交互75
3.5 Docker鏡像管理77
3.5.1什麼是Docker鏡像77
3.5.2 Docker鏡像關鍵概念80
3.5.3 Docker鏡像構建操作81
3.5.4 Docker鏡像的分發方法84
3.6 Docker存儲管理87
3.6.1 Docker鏡像元數據管理87
3.6.2 Docker存儲驅動89
3.7 Docker數據捲99
3.7.1數據捲的使用方式100
3.7.2數據捲原理解讀105
3.8 Docker網絡管理108
3.8.1 Docker網絡基礎108
3.8.2 Docker daemon網絡配置原理116
3.8.3 libcontainer網絡配置原理119
3.8.4傳統的link原理解析125
3.8.5新的link介紹127
3.9 Docker與容器安全129
3.9.1 Docker的安全機制129
3.9.2 Docker安全問題135
3.9.3 Docker安全的解決方案139
第4章Docker高級實踐技巧151
4.1容器化思維151
4.1.1 SSH服務器的替代方案151
4.1.2 Docker內應用日誌管理方案152
4.1 .3容器化思維及更多153
4.2 Docker高級網絡實踐153
4.2.1玩轉Linux networknamespace 154
4.2.2 pipework原理解析159
4.2.3 pipework跨主機通信165
4.2.4 OVS劃分VLAN 170
4.2.5 OVS隧道模式174
4.3 Dockerfile最佳實踐187
4.3.1 Dockerfile的使用187
4.3.2 Dockerfile實踐心得191
4.4 Docker容器的監控手段193
4.4.1 Docker容器監控維度194
4.4.2容器監控命令195
4.4.3常用的容器監控工具197
4.5容器化應用構建的基礎:高可用配置中心201
4.5.1 etcd經典應用場景201
4.5.2 etcd實現原理206
第二部分Docker雲平臺解讀
第5章構建自己的容器雲222
5.1再談雲平臺的層次架構222
5.2從小工到專家225
第6章專註編排與部署:三劍客與Fleet 230
6.1編排小神器Fig/Compose 230
6.1.1再談容器編排與部署230
6.1.2 Compose原理:一探究竟233
6.2跨平臺宿主環境管理工具Machine 237
6.2.1 Machine與虛擬機軟件237
6.2.2 Machine與IaaS平臺238
6.2.3 Machine小結239
6.3集群抽象工具Swarm 240
6.3.1 Swarm簡介240
6.3.2試用Swarm 241
6.3.3 Swarm集群的多種創建方式243
6.3.4 Swarm對請求的處理245
6.3.5 Swarm集群的調度策略245
6.3.6 Swarm集群高可用(HA) 246
6.3.7 Swarm與Machine 247
6.3.8 Swarm小結248
6.4編排之秀Fleet 248
6.4.1舊問題新角度:Docker distro 249
6.4.2 Fleet的原理剖析252
第7章專註應用支撐和運行時:Flynn和Deis 258
7.1 Flynn,一個小而美的兩層架構258
7.1.1第0層:容器雲的基礎設施259
7.1.2第1層:容器雲的功能框架259
7.1.3 Flynn體系架構與實現原理260
7.2談談Deis與Flynn 270
7.2 .1應用發布上的比較271
7.2.2關於Deis的一些思考273
第8章一切皆容器:Kubernetes 274
8.1 Kubernetes是個什麼樣的項目274
8.2 Kubernetes的設計解讀275
8.2.1一個典型案例:Guestbook 275
8.2 .2 pod設計解讀277
8.2.3 replication controller設計解讀288
8.2.4 service的設計解讀294
8.2.5新一代副本控制器replica set 306
8.2.6 Deployment 307
8.2.7 DaemonSet 312
8.2.8 ConfigMap 312
8.2. 9 Job 317
8.2.10 Horizontal Pod Autoscaler 318
8.3 Kubernetes核心組件解讀320
8.3.1 Kubernetes的整體架構320
8.3.2 APIServer 321
8.3.3 scheduler 328
8.3.4 controller manager 338
8.3.5 kubelet 346
8.3.6 kube- proxy 352
8.3.7核心組件協作流程362
8.4 Kubernetes存儲核心原理366
8.4.1 volume設計解讀366
8.4.2 volume實現原理分析367
8.4.3 volume使用案例368
8.4.4 persistent volume 371
8.5 Kubernetes網絡核心原理372
8.5.1單pod單IP模型373
8.5.2 pod和網絡容器374
8.5.3實現Kubernetes的網絡模型377
8.6 Kubernetes多租戶管理與資源控制381
8.6.1 namespace設計解讀381
8.6.2 Kubernetes用戶認證機制385
8.6.3 Kubernetes用戶授權機制387
8.6.4 Kubernetes多維資源管理機制admission control 390
8.7 Kubernetes高級實踐402
8.7.1應用健康檢查402
8.7.2高可用性405
8.7.3日誌408
8.7.4集成DNS 410
8.7. 5容器上下文環境412
8.8 Kubernetes未來動向414
8.8.1 Ubernetes 414
8.8.2 petSet 415
8.8.3 performance 417
8.8.4 rescheduler 417
8.8.5 OCI標準419
8.9不要停止思考419
第三部分附錄
附錄A Docker的安裝424
附錄B閱讀Docker源代碼的神兵
利器432
附錄C快速熟悉開源項目441
附錄D cgroups的測試與使用444
附錄E cgroups子系統配置參數介紹448
附錄F Kubernetes的安裝453
後記457