作 者:趙渝強 著
定 價:118
出 版 社:電子工業出版社
出版日期:2022年05月01日
頁 數:460
裝 幀:平裝
ISBN:9787121433139
"(1)一次講解兩種技術。(2)主線清晰,循序漸進。(3)突出實戰,注重效果。(4)言簡意賅,閱讀性強。(5)深入原理,關注難點和易錯點。"
●上篇 Docker從原理到實戰
第1章 Docker入門
1.1 為什麼需要容器技術
1.2 Docker簡介
1.3 Docker的體繫架構與基本概念
1.4 安裝Docker
1.4.1 安裝Linux操作繫統/6
1.4.2 使用YUM方式安裝Docker/16
1.4.3 使用二進制包方式安裝Docker/18
1.4.4 驗證Docker環境/21
1.5 【實戰】在Docker中部署第一個應用
第2章 Docker的鏡像
2.1 什麼是Docker的鏡像
2.1.1 使用Docker默認的鏡像存儲路徑/27
2.1.2 自定義Docker的鏡像存儲路徑/28
2.2 使用Docker的公有鏡像倉庫
2.2.1 【實戰】訪問Docker官方的公有鏡像倉庫/29
2.2.2 【實戰】配置和使用阿裡雲Docker鏡像加速倉庫/32
2.3 使用命令行工具管理Docker的鏡像
2.4 構建自己的鏡像
2.4.1 【實戰】使用“docker commit”命令構建鏡像/36
2.4.2 【實戰】使用Dockerfile文件構建鏡像/39
2.4.3 Dockerfile文件詳解/40
2.4.4 【實戰】使用Dockerfile文件的綜合案例/42
2.5 搭建私有鏡像倉庫Harbor
2.5.1 安裝Docker和Docker Compose/45
2.5.2 安裝與配置Harbor/46
2.5.3 【實戰】在Docker中使用Harbor/48
第3章 Docker的容器
3.1 Docker容器的基本概念與操作
3.2 Docker的日志
3.2.1 【實戰】訪問Docker引擎的日志/53
3.2.2 【實戰】訪問Docker應用的日志/54
3.3 管理容器的資源
3.3.1 什麼是Linux CGroup/56
3.3.2 【實戰】Docker對CPU的使用/62
3.3.3 【實戰】Docker對內存的使用/64
3.3.4 【實戰】Docker對I/O帶寬的使用/65
3.4 管理Docker容器中的數據
3.4.1 在Docker容器中實現數據管理的兩種方式/67
3.4.2 【實戰】使用數據卷管理Docker容器中的數據/68
3.4.3 【實戰】使用數據卷容器管理Docker容器中的數據/71
第4章 Docker的網絡通信
4.1 Docker容器網絡通信的基本原理
4.2 使用命令查看Docker的網絡配置信息
4.3 Docker的4種網絡通信模式
4.3.1 bridge模式/80
4.3.2 host模式/82
4.3.3 container模式/83
4.3.4 none模式/85
4.4 容器間的通信
4.4.1 【實戰】通過IP地址進行通信/86
4.4.2 【實戰】通過Docker DNS Server進行通信/87
4.4.3 【實戰】通過Joined方式進行通信/88
4.4.4 容器間的跨節點通信/89
4.5 容器的網絡訪問控制
4.5.1 容器內的應用訪問外部網絡/95
4.5.2 從外部網絡訪問容器內的應用/96
第5章 使用Docker Compose進行服務編排
5.1 配置Docker Compose
5.2 進行服務編排
5.2.1 【實戰】使用手動方式部署應用/99
5.2.2 【實戰】使用Docker Compose部署應用/101
5.2.3 【實戰】使用Docker Compose進行服務的在線擴容/縮容/102
5.2.4 【實戰】在Docker Compose中控制模塊啟動和停止的順序/104
5.3 Docker Compose中的網絡
5.3.1 Docker Compose中的默認網絡環境/108
5.3.2 在Docker Compose中自定義模塊的網絡環境/109
第6章 使用Docker Machine進行遠程管理
6.1 使用Docker Machine
6.1.1 安裝Docker Machine/112
6.1.2 在遠端宿主機上安裝Docker/112
6.2 Docker Machine的基本用法
6.2.1 【實戰】使用Docker Machine的命令/115
6.2.2 【實戰】管理遠端的Docker節點/116
6.3 Docker Machine的高級用法
6.3.1 【實戰】使用Docker Machine創建基於VirtualBox的虛擬主機/118
6.3.2 【實戰】使用Docker Machine創建基於vSphere的虛擬主機/120
第7章 使用Docker Swarm構建集群
7.1 Docker Swarm集群的體繫架構
7.2 構建Docker Swarm集群
7.3 在Docker Swarm集群中部署應用與HAProxy
7.3.1 【實戰】在集群中部署應用/126
7.3.2 【實戰】測試集群的高可用性/128
7.3.3 【實戰】使用HAProxy為集群添加外部負載均衡功能/130
7.3.4 【實戰】實現服務的滾動更新/131
7.4 Docker Swarm集群的數據持久化
7.4.1 【實戰】通過volume實現集群的數據持久化/133
7.4.2 【實戰】通過NFS實現集群的數據持久化/134
7.5 Docker Swarm集群的負載均衡
7.5.1 【實戰】測試Docker Swarm集群的負載均衡/138
7.5.2 選擇Docker Swarm集群的負載均衡模式/139
第8章 在Docker中實現持續集成與持續部署
8.1 什麼是持續集成與持續部署(CI/CD)
8.2 Jenkins簡介與部署
8.2.1 Docker與Jenkins集成的體繫架構/143
8.2.2 【實戰】部署Jenkins/144
8.2.3 【實戰】使用Jenkins部署第一個應用/146
8.3 基於Jenkins實現Docker應用的持續集成與持續部署
8.3.1 【實戰】準備私有代碼倉庫SVN/150
8.3.2 開發Dockerfile文件/152
8.3.3 【實戰】集成Jenkins和Docker/152
第9章 基於Consul實現Docker的服務注冊與發現
9.1 服務的注冊與發現
9.1.1 什麼是服務的注冊與發現/155
9.1.2 為什麼需要服務的注冊與發現/156
9.1.3 常見的服務注冊中心/159
9.2 注冊中心Consul的基本使用
9.2.1 Consul的安裝與啟動/160
9.2.2 【實戰】使用JSON文件在Consul中注冊服務/161
9.2.3 【實戰】使用API在Consul中注冊服務/163
9.3 集成Consul與Docker
9.3.1 Docker服務注冊與發現的體繫架構/166
9.3.2 【實戰】使用Registrator鏡像實現Docker服務的注冊/167
9.3.3 【實戰】使用Consul-Template實現Docker服務的發現/170
第10章 利用圖形工具管理Docker
10.1 單機環境中的Docker圖形工具:Docker UI
10.1.1 部署Docker UI/173
10.1.2 【實戰】使用Docker UI管理鏡像與容器/174
10.2 輕量級的Docker圖形工具:Portainer
10.2.1 在單機環境中部署Portainer/177
10.2.2 【實戰】使用Portainer管理Docker的鏡像與容器/179
10.2.3 【實戰】使用Portainer管理遠端主機上的Docker/180
10.2.4 在Docker Swarm集群中部署Portainer/182
10.3 開源的Docker圖形工具——Shipyard
10.3.1 Shipyard的組件/184
10.3.2 部署Shipyard/184
10.3.3 【實戰】使用Shipyard創建容器/187
第11章 Docker應用實戰
11.1 Docker與數據庫
11.1.1 在Docker容器中部署MySQL/188
11.1.2 數據庫不適合Docker容器化的原因/189
11.2 【實戰】Docker與Python
11.3 【實戰】Docker與PHP/192
下篇 Kubernetes從原理到實戰
第12章 Kubernetes體繫架構
12.1 什麼是Kubernetes
12.2 Kubernetes集群
12.2.1 集群的架構體繫/198
12.2.2 Kubernetes的核心組件/198
12.2.3 Kubernetes的常用附加組件/199
12.3 Kubernetes的對像
12.3.1 對像的管理/200
12.3.2 對像與命名空間/201
12.3.3 對像的標簽/202
第13章 部署Kubernetes集群
13.1 Kubernetes的部署方式
13.1.1 使用kubeadmin部署Kubernetes集群/204
13.1.2 使用YUM方式部署Kubernetes集群/208
13.1.3 使用二進制包部署Kubernetes集群/212
13.1.4 使用minikube工具部署Kubernetes單機版集群/231
13.1.5 Kubernetes集群的高可用/236
13.2 Kubernetes的客戶端工具
13.2.1 Kubernetes圖形管理工具——DashBoard UI/237
13.2.2 Kubernetes命令行管理工具——kubectl/240
13.3 【實戰】使用Kubectl在Kubernetes中部署第一個應用
第14章 Kubernetes中的最小可部署對像Pod
14.1 什麼是Pod
14.2 【實戰】Pod的基本使用方法
14.3 Pod中的容器
14.3.1 基礎容器/251
14.3.2 初始化容器/252
14.3.3 臨時容器/253
14.3.4 業務容器/254
14.4 Pod的生命周期
14.4.1 Pod的階段與容器的狀態/255
14.4.2 Pod中容器的重啟策略/256
14.4.3 【實戰】Pod的健康檢查/257
14.5 Pod的調度策略
14.5.1 Pod的創建過程/262
14.5.2 【實戰】自定義Pod調度的約束策略/262
14.6 Pod資源的使用
14.7 Pod的鏡像拉取策略
14.8 Pod的配置管理
14.8.1 為什麼需要配置管理/268
14.8.2 【實戰】使用ConfigMap管理Pod的配置信息/268
14.8.3 【實戰】使用Secret管理Pod的配置信息/275
第15章 使用控制器管理Pod
15.1 為什麼需要控制器
15.2 Deployment控制器
15.2.1 【實戰】創建和使用Deployment控制器/282
15.2.2 【實戰】驗證Deployment控制器的不同狀態/286
15.2.3 【實戰】Deployment控制器的清理策略/289
15.2.4 應用的部署/292
15.2.5 編寫Deployment控制器的規則/304
15.3 DaemonSet控制器
15.3.1 DaemonSet控制器的創建/305
15.3.2 DaemonSet控制器的調度/307
15.4 Job控制器
15.4.1 【實戰】單工作隊列的Job串行方式/307
15.4.2 【實戰】多工作隊列的Job並行方式/308
15.4.3 Job的終止與清理/310
15.5 CronJob控制器
15.5.1 【實戰】運行第一個CronJob控制器/313
15.5.2 CronJob控制器中的時間表示/314
15.5.3 CronJob控制器的/315
15.6 StatefulSets控制器
15.6.1 【實戰】創建StatefulSets控制器/316
15.6.2 StatefulSets控制器的擴容/縮容/317
15.6.3 StatefulSets控制器的更新/回滾/318
第16章 通過Service訪問Pod
16.1 Service的概念與使用
16.1.1 【實戰】通過Service向外部暴露Pod/321
16.1.2 Service的多端口設置/323
16.1.3 集群內部的DNS服務/324
16.1.4 【實戰】無頭Service/325
16.2 Service的發布類型
16.2.1 NodePort/328
16.2.2 ClusterIP/329
16.2.3 LoadBalance/331
16.2.4 ExternalName/332
16.3 虛擬IP與Service的代理模式
16.3.1 userspace代理模式/333
16.3.2 iptables代理模式/334
16.3.3 IPVS代理模式/336
16.4 集群外部的請求訪問集群內應用的很好方式——Ingress
16.4.1 Ingress是什麼/339
16.4.2 【實戰】使用Ingress Controller創建Ingress/340
16.4.3 【實戰】使用Ingress的注解/344
16.4.4 基於Ingress的高可用架構/348
第17章 持久化存儲
17.1 Kubernetes持久化存儲方式
17.1.1 【實戰】使用節點數據卷/350
17.1.2 【實戰】使用網絡數據卷/351
17.1.3 【實戰】使用臨時數據卷/353
17.2 持久卷
17.2.1 持久卷是什麼/355
17.2.2 【實戰】第一個持久卷示例/355
17.2.3 持久卷的訪問模式/357
17.2.4 【實戰】持久卷的回收策略/359
17.3 持久卷聲明
17.3.1 持久卷和持久卷聲明的區別/361
17.3.2 【實戰】在Pod中使用持久卷聲明/362
17.3.3 storageClass詳解/364
17.4 【實戰】實現持久卷的動態供給
第18章 Kubernetes的安全認證
18.1 Kubernetes的安全框架
18.2 Kubernetes的用戶認證
18.3 Kubernetes的鋻權管理
18.3.1 基於角色的訪問控制(RBAC鋻權)/379
18.3.2 基於屬性的訪問控制(ABAC鋻權)/384
18.3.3 基於節點的訪問控制(node鋻權)/386
18.3.4 基於Webhook的訪問控制/387
18.4 管理服務賬號(Service Account)
18.4.1 服務賬號與用戶賬號/391
18.4.2 【實戰】創建和使用服務賬號/391
18.4.3 服務賬號的工作機制/396
第19章 Kubernetes中的日志收集與監控
19.1 收集哪些日志
19.2 日志收集方案
19.2.1 初識ELK/399
19.2.2 日志收集的架構/399
19.2.3 日志收集方案詳解/400
19.3 實現Kubernetes集群的日志收集
19.3.1 安裝ELK/402
19.3.2 【實戰】采集Kubernetes繫統組件的日志/405
19.3.3 【實戰】采集Nginx 應用的日志/410
19.3.4 【實戰】采集Tomcat應用的日志/414
19.4 監控Kubernetes
19.4.1 Kubernetes監控方案/418
19.4.2 【實戰】部署Kubernetes監控繫統/419
第20章 Kubernetes集成與運維管理
20.1 Jenkins與Kubernetes的持續集成與持續部署
20.1.1 基於Kubernetes的Jenkins集群架構/427
20.1.2 【實戰】Jenkins與Kubernetes的集成/428
20.2 使用Helm簡化Kubernetes應用的部署和管理
20.2.1 什麼是Helm/435
20.2.2 部署Helm/435
20.2.3 【實戰】使用Helm管理Kubernetes/437
本書基於作者多年的教學與實踐經驗編寫,分為上下兩篇,共20章。
上篇(第1-11章)介紹Docoker,包含:Docker入門、Docker的鏡像、Docker的容器、Docker的網絡通信、使用Docker Compose進行服務編排、使用DockerMachine進行遠程管理、使用Docker Swarm構建集群、在Docker中實現持續集成與持續部署、基於Consul實現Docker的服務注冊與發現、利用圖形工具管理Docker及Docker應用實戰。
下篇(第12-20章)介紹Kubernetes,包含:Kubernetes體繫架構、部署Kubernetes集群、Kubernetes中的最小可部署對像Pod、使用控制器管理Pod、通過Service訪問Pod、持久化存儲、Kubernetes的安全認證、Kubernetes中的日志收集與監控、Kubernet等
趙渝強 著
"趙渝強近20年IT行業從業經歷,清華大學計算機軟件工程專業畢業,華為認證講師曾擔任京東大學大數據學院院長,Oracle中國有限公司高級技術顧問精通大數據、數據庫、中間件技術和Java技術"