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