Docker + Kubernetes 容器實戰派

趙渝強

  • 出版商: 電子工業
  • 出版日期: 2022-05-01
  • 定價: $708
  • 售價: 8.5$602 (限時優惠至 2024-03-31)
  • 語言: 簡體中文
  • 頁數: 460
  • 裝訂: 平裝
  • ISBN: 7121433133
  • ISBN-13: 9787121433139
  • 相關分類: DockerKubernetes
  • 立即出貨

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

商品描述

本書基於作者多年的教學與實踐經驗編寫,分為上下兩篇,共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集成與運維管理。

作者簡介

趙渝強
曾任京東大學大數據學院院長、Oracle(中國)高級技術顧問,現專職從事培訓工作。
出版了《大數據原理與實戰》《Kafka進階》等書。

目錄大綱

上篇 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