Docker+Kubernetes容器實戰派

Docker+Kubernetes容器實戰派

《Docker+Kubernetes容器實戰派》是電子工業出版社出版圖書,作者是趙渝強

一本書學會 Docker+Kubernetes,快速入門並應對工作中的大部分需求

基本介紹

  • 中文名:Docker+Kubernetes容器實戰派
  • 作者:趙渝強
  • 出版社:電子工業出版社
  • 出版時間:2022年5月
  • 頁數:460 頁
  • 定價:118 元
  • 開本:16 開
  • ISBN:9787121433139
圖書目錄,內容簡介,作者簡介,

圖書目錄

上篇 Docker從原理到實戰
第1章 Docker入門 2
1.1 為什麼需要容器技術 2
1.2 Docker簡介 4
1.3 Docker的體系架構與基本概念 4
1.4 安裝Docker 5
1.4.1 安裝Linux作業系統 6
1.4.2 使用YUM方式安裝Docker 16
1.4.3 使用二進制包方式安裝Docker 18
1.4.4 驗證Docker環境 21
1.5 【實戰】在Docker中部署第一個套用 22
第2章 Docker的鏡像 26
2.1 什麼是Docker的鏡像 26
2.1.1 使用Docker默認的鏡像存儲路徑 27
2.1.2 自定義Docker的鏡像存儲路徑 28
2.2 使用Docker的公有鏡像倉庫 28
2.2.1 【實戰】訪問Docker官方的公有鏡像倉庫 29
2.2.2 【實戰】配置和使用阿里雲Docker鏡像加速倉庫 32
2.3 使用命令行工具管理Docker的鏡像 34
2.4 構建自己的鏡像 36
2.4.1 【實戰】使用“docker commit”命令構建鏡像 36
2.4.2 【實戰】使用Dockerfile檔案構建鏡像 39
2.4.3 Dockerfile檔案詳解 40
2.4.4 【實戰】使用Dockerfile檔案的綜合案例 42
2.5 搭建私有鏡像倉庫Harbor 44
2.5.1 安裝Docker和Docker Compose 45
2.5.2 安裝與配置Harbor 46
2.5.3 【實戰】在Docker中使用Harbor 48
第3章 Docker的容器 50
3.1 Docker容器的基本概念與操作 50
3.2 Docker的日誌 53
3.2.1 【實戰】訪問Docker引擎的日誌 53
3.2.2 【實戰】訪問Docker套用的日誌 54
3.3 管理容器的資源 56
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容器中的數據 67
3.4.1 在Docker容器中實現數據管理的兩種方式 67
3.4.2 【實戰】使用數據卷管理Docker容器中的數據 68
3.4.3 【實戰】使用數據卷容器管理Docker容器中的數據 71
第4章 Docker的網路通信 75
4.1 Docker容器網路通信的基本原理 75
4.2 使用命令查看Docker的網路配置信息 78
4.3 Docker的4種網路通信模式 80
4.3.1 bridge模式 80
4.3.2 host模式 82
4.3.3 container模式 83
4.3.4 none模式 85
4.4 容器間的通信 86
4.4.1 【實戰】通過IP位址進行通信 86
4.4.2 【實戰】通過Docker DNS Server進行通信 87
4.4.3 【實戰】通過Joined方式進行通信 88
4.4.4 容器間的跨節點通信 89
4.5 容器的網路訪問控制 95
4.5.1 容器內的套用訪問外部網路 95
4.5.2 從外部網路訪問容器內的套用 96
第5章 使用Docker Compose進行服務編排 97
5.1 配置Docker Compose 97
5.2 進行服務編排 98
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中的網路 108
5.3.1 Docker Compose中的默認網路環境 108
5.3.2 在Docker Compose中自定義模組的網路環境 109
第6章 使用Docker Machine進行遠程管理 111
6.1 使用Docker Machine 112
6.1.1 安裝Docker Machine 112
6.1.2 在遠端宿主機上安裝Docker 112
6.2 Docker Machine的基本用法 115
6.2.1 【實戰】使用Docker Machine的命令 115
6.2.2 【實戰】管理遠端的Docker節點 116
6.3 Docker Machine的高級用法 118
6.3.1 【實戰】使用Docker Machine創建基於VirtualBox的虛擬主機 118
6.3.2 【實戰】使用Docker Machine創建基於vSphere的虛擬主機 120
第7章 使用Docker Swarm構建集群 123
7.1 Docker Swarm集群的體系架構 123
7.2 構建Docker Swarm集群 124
7.3 在Docker Swarm集群中部署套用與HAProxy 126
7.3.1 【實戰】在集群中部署套用 126
7.3.2 【實戰】測試集群的高可用性 128
7.3.3 【實戰】使用HAProxy為集群添加外部負載均衡功能 130
7.3.4 【實戰】實現服務的滾動更新 131
7.4 Docker Swarm集群的數據持久化 132
7.4.1 【實戰】通過volume實現集群的數據持久化 133
7.4.2 【實戰】通過NFS實現集群的數據持久化 134
7.5 Docker Swarm集群的負載均衡 138
7.5.1 【實戰】測試Docker Swarm集群的負載均衡 138
7.5.2 選擇Docker Swarm集群的負載均衡模式 139
第8章 在Docker中實現持續集成與持續部署 142
8.1 什麼是持續集成與持續部署(CI/CD) 142
8.2 Jenkins簡介與部署 143
8.2.1 Docker與Jenkins集成的體系架構 143
8.2.2 【實戰】部署Jenkins 144
8.2.3 【實戰】使用Jenkins部署第一個套用 146
8.3 基於Jenkins實現Docker套用的持續集成與持續部署 149
8.3.1 【實戰】準備私有代碼倉庫SVN 150
8.3.2 開發Dockerfile檔案 152
8.3.3 【實戰】集成Jenkins和Docker 152
第9章 基於Consul實現Docker的服務註冊與發現 155
9.1 服務的註冊與發現 155
9.1.1 什麼是服務的註冊與發現 155
9.1.2 為什麼需要服務的註冊與發現 156
9.1.3 常見的服務註冊中心 159
9.2 註冊中心Consul的基本使用 159
9.2.1 Consul的安裝與啟動 160
9.2.2 【實戰】使用JSON檔案在Consul中註冊服務 161
9.2.3 【實戰】使用API在Consul中註冊服務 163
9.3 集成Consul與Docker 166
9.3.1 Docker服務註冊與發現的體系架構 166
9.3.2 【實戰】使用Registrator鏡像實現Docker服務的註冊 167
9.3.3 【實戰】使用Consul-Template實現Docker服務的發現 170
第10章 利用圖形工具管理Docker 173
10.1 單機環境中的Docker圖形工具:Docker UI 173
10.1.1 部署Docker UI 173
10.1.2 【實戰】使用Docker UI管理鏡像與容器 174
10.2 輕量級的Docker圖形工具:Portainer 176
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 184
10.3.1 Shipyard的組件 184
10.3.2 部署Shipyard 184
10.3.3 【實戰】使用Shipyard創建容器 187
第11章 Docker套用實戰 188
11.1 Docker與資料庫 188
11.1.1 在Docker容器中部署MySQL 188
11.1.2 資料庫不適合Docker容器化的原因 189
11.2 【實戰】Docker與Python 190
11.3 【實戰】Docker與PHP 192
下篇 Kubernetes從原理到實戰
第12章 Kubernetes體系架構 196
12.1 什麼是Kubernetes 196
12.2 Kubernetes集群 197
12.2.1 集群的架構體系 198
12.2.2 Kubernetes的核心組件 198
12.2.3 Kubernetes的常用附加組件 199
12.3 Kubernetes的對象 200
12.3.1 對象的管理 200
12.3.2 對象與命名空間 201
12.3.3 對象的標籤 202
第13章 部署Kubernetes集群 204
13.1 Kubernetes的部署方式 204
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的客戶端工具 237
13.2.1 Kubernetes圖形管理工具——DashBoard UI 237
13.2.2 Kubernetes命令行管理工具——kubectl 240
13.3 【實戰】使用Kubectl在Kubernetes中部署第一個套用 242
第14章 Kubernetes中的最小可部署對象Pod 246
14.1 什麼是Pod 246
14.2 【實戰】Pod的基本使用方法 247
14.3 Pod中的容器 251
14.3.1 基礎容器 251
14.3.2 初始化容器 252
14.3.3 臨時容器 253
14.3.4 業務容器 254
14.4 Pod的生命周期 255
14.4.1 Pod的階段與容器的狀態 255
14.4.2 Pod中容器的重啟策略 256
14.4.3 【實戰】Pod的健康檢查 257
14.5 Pod的調度策略 261
14.5.1 Pod的創建過程 262
14.5.2 【實戰】自定義Pod調度的約束策略 262
14.6 Pod資源的使用限制 264
14.7 Pod的鏡像拉取策略 267
14.8 Pod的配置管理 268
14.8.1 為什麼需要配置管理 268
14.8.2 【實戰】使用ConfigMap管理Pod的配置信息 268
14.8.3 【實戰】使用Secret管理Pod的配置信息 275
第15章 使用控制器管理Pod 280
15.1 為什麼需要控制器 280
15.2 Deployment控制器 281
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控制器 305
15.3.1 DaemonSet控制器的創建 305
15.3.2 DaemonSet控制器的調度 307
15.4 Job控制器 307
15.4.1 【實戰】單工作佇列的Job串列方式 307
15.4.2 【實戰】多工作佇列的Job並行方式 308
15.4.3 Job的終止與清理 310
15.5 CronJob控制器 312
15.5.1 【實戰】運行第一個CronJob控制器 313
15.5.2 CronJob控制器中的時間表示 314
15.5.3 CronJob控制器的限制 315
15.6 StatefulSets控制器 316
15.6.1 【實戰】創建StatefulSets控制器 316
15.6.2 StatefulSets控制器的擴容/縮容 317
15.6.3 StatefulSets控制器的更新/回滾 318
第16章 通過Service訪問Pod 320
16.1 Service的概念與使用 320
16.1.1 【實戰】通過Service向外部暴露Pod 321
16.1.2 Service的多連線埠設定 323
16.1.3 集群內部的DNS服務 324
16.1.4 【實戰】無頭Service 325
16.2 Service的發布類型 328
16.2.1 NodePort 328
16.2.2 ClusterIP 329
16.2.3 LoadBalance 331
16.2.4 ExternalName 332
16.3 虛擬IP與Service的代理模式 333
16.3.1 userspace代理模式 333
16.3.2 iptables代理模式 334
16.3.3 IPVS代理模式 336
16.4 集群外部的請求訪問集群內套用的最佳方式——Ingress 339
16.4.1 Ingress是什麼 339
16.4.2 【實戰】使用Ingress Controller創建Ingress 340
16.4.3 【實戰】使用Ingress的註解 344
16.4.4 基於Ingress的高可用架構 348
第17章 持久化存儲 349
17.1 Kubernetes持久化存儲方式 349
17.1.1 【實戰】使用節點數據卷 350
17.1.2 【實戰】使用網路數據卷 351
17.1.3 【實戰】使用臨時數據卷 353
17.2 持久卷 355
17.2.1 持久卷是什麼 355
17.2.2 【實戰】第一個持久卷示例 355
17.2.3 持久卷的訪問模式 357
17.2.4 【實戰】持久卷的回收策略 359
17.3 持久卷聲明 361
17.3.1 持久卷和持久卷聲明的區別 361
17.3.2 【實戰】在Pod中使用持久卷聲明 362
17.3.3 storageClass詳解 364
17.4 【實戰】實現持久卷的動態供給 365
第18章 Kubernetes的安全認證 372
18.1 Kubernetes的安全框架 372
18.2 Kubernetes的用戶認證 374
18.3 Kubernetes的鑒權管理 378
18.3.1 基於角色的訪問控制(RBAC鑒權) 379
18.3.2 基於屬性的訪問控制(ABAC鑒權) 384
18.3.3 基於節點的訪問控制(node鑒權) 386
18.3.4 基於Webhook的訪問控制 387
18.4 管理服務賬號(Service Account) 391
18.4.1 服務賬號與用戶賬號 391
18.4.2 【實戰】創建和使用服務賬號 391
18.4.3 服務賬號的工作機制 396
第19章 Kubernetes中的日誌收集與監控 398
19.1 收集哪些日誌 398
19.2 日誌收集方案 399
19.2.1 初識ELK 399
19.2.2 日誌收集的架構 399
19.2.3 日誌收集方案詳解 400
19.3 實現Kubernetes集群的日誌收集 401
19.3.1 安裝ELK 402
19.3.2 【實戰】採集Kubernetes系統組件的日誌 405
19.3.3 【實戰】採集Nginx套用的日誌 410
19.3.4 【實戰】採集Tomcat套用的日誌 414
19.4 監控Kubernetes 418
19.4.1 Kubernetes監控方案 418
19.4.2 【實戰】部署Kubernetes監控系統 419
第20章 Kubernetes集成與運維管理 427
20.1 Jenkins與Kubernetes的持續集成與持續部署 427
20.1.1 基於Kubernetes的Jenkins集群架構 427
20.1.2 【實戰】Jenkins與Kubernetes的集成 428
20.2 使用Helm簡化Kubernetes套用的部署和管理 435
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進行服務編排、使用Docker Machine進行遠程管理、使用Docker Swarm構建集群、在Docker中實現持續集成與持續部署、基於Consul實現Docker的服務註冊與發現、利用圖形工具管理Docker及Docker套用實戰。下篇(第12~20章)介紹Kubernetes,包含:Kubernetes體系架構、部署Kubernetes集群、Kubernetes中的最小可部署對象Pod、使用控制器管理Pod、通過Service訪問Pod、持久化存儲、Kubernetes的安全認證、Kubernetes中的日誌收集與監控、Kubernetes集成與運維管理。

作者簡介

趙渝強
近20年IT行業從業經歷,清華大學計算機軟體工程專業畢業,華為認證講師
曾擔任京東大學大數據學院院長,Oracle中國有限公司高級技術顧問
精通大數據、資料庫、中間件技術和Java技術

相關詞條

熱門詞條

聯絡我們