序
前言
第1章 Docker簡介 1
1.1 什么是Docker 1
1.2 為什么要用Docker 3
1.3 Docker基本概念 4
1.3.1 鏡像 4
1.3.2 容器 6
1.3.3 鏡像倉庫 8
1.4 Docker架構及原理 8
1.4.1 Docker架構 8
1.4.2 Docker原理 11
1.4.3 容器網絡 15
1.4.4 容器存儲 16
1.5 Docker安裝 16
1.5.1 手動安裝模式 17
1.5.2 Ubuntu中自動化安裝Docker 18
1.5.3 CentOS中自動化安裝Docker 19
第2章 容器引擎 21
2.1 容器引擎實現(xiàn)原理 22
2.2 容器生命周期管理 29
2.3 容器狀態(tài)管理 33
2.4 訪問運行狀態(tài)容器 35
2.5 訪問容器內容 36
第3章 鏡像管理 37
3.1 Dockerfile及鏡像制作 37
3.1.1 Dockerfile的作用 37
3.1.2 Dockerfile文件構成 37
3.1.3 常用命令集 38
3.1.4 構建鏡像 38
3.2 鏡像基本操作 38
3.2.1 從鏡像倉庫下載鏡像 38
3.2.2 將本地鏡像上傳到鏡像倉庫 39
3.2.3 查看本地鏡像 39
3.2.4 導出和導入本地鏡像 40
3.2.5 構建鏡像 41
3.2.6 修改本地鏡像標識 42
3.2.7 刪除本地鏡像 42
3.3 Dockerfile優(yōu)化 42
3.3.1 Dockerfile檢查項 42
3.3.2 Dockerfile優(yōu)化實例 43
3.3.3 檢查及優(yōu)化工具 44
3.4 操作系統(tǒng)基礎鏡像制作 44
3.4.1 操作系統(tǒng)版本選擇 45
3.4.2 操作系統(tǒng)參數(shù)調整 45
3.4.3 確定基礎rpm包范圍 45
3.4.4 確定常用命令范圍 46
3.4.5 操作系統(tǒng)鏡像制作過程 48
3.4.6 系統(tǒng)資源限制配置說明 49
3.5 容器鏡像安全加固 49
3.5.1 容器安全加固規(guī)范 49
3.5.2 安全檢查工具 51
第4章 鏡像倉庫管理 52
4.1 Docker Registry 52
4.1.1 Docker Hub 52
4.1.2 第三方公共倉庫 53
4.1.3 建立私有鏡像倉庫 53
4.2 Harbor 54
4.2.1 Harbor架構 55
4.2.2 Harbor的鏡像同步機制 56
4.2.3 Harbor用戶認證 56
4.2.4 Harbor容器鏡像安全掃描 57
4.2.5 Harbor部署實戰(zhàn) 57
第5章 Docker相關部署實踐 59
5.1 MySQL Docker部署實踐 59
5.1.1 MySQL簡介 59
5.1.2 MySQL為什么要容器化部署 60
5.1.3 MySQL容器化操作實踐 60
5.2 Docker支持GPU實踐 62
5.2.1 GPU簡介 62
5.2.2 CPU與GPU的對比 63
5.2.3 通過nvidia-docker使用GPU 63
第6章 Kubernetes簡介 65
6.1 PaaS簡介 65
6.1.1 傳統(tǒng)PaaS系統(tǒng) 65
6.1.2 基于Docker的新型PaaS平臺 67
6.2 為什么需要Kubernetes 69
6.3 Kubernetes的由來 69
6.3.1 Kubernetes的特點 69
6.3.2 Kubernetes的歷史 70
6.4 Kubernetes核心概念 71
第7章 Kubernetes架構和部署 73
7.1 Kubernetes架構及組件 73
7.1.1 Master節(jié)點 73
7.1.2 Node節(jié)點 75
7.1.3 調度控制原理 76
7.1.4 集群功能模塊間的通信 76
7.1.5 Kubernetes高可用方案 77
7.2 Kubernetes部署方案總結 77
第8章 Pod相關核心技術 81
8.1 Pod 81
8.1.1 Pod定義文件詳解 81
8.1.2 基本操作 83
8.1.3 Pod與容器 85
8.1.4 鏡像 86
8.1.5 其他設置 86
8.1.6 Pod調度 89
8.1.7 Pod生命周期 90
8.2 Label 92
8.3 Replication Controller和Replica Set 93
8.3.1 RC定義文件詳解 93
8.3.2 RC與Pod的關聯(lián)——Label 95
8.3.3 彈性伸縮 97
8.3.4 滾動升級 98
8.3.5 新一代副本控制器Replica Set 100
8.4 Horizontal Pod Autoscaler 101
8.5 Deployment 102
8.6 Job 105
8.7 StatefulSet 106
8.7.1 使用StatefulSet 106
8.7.2 擴容/縮容StatefulSet 108
8.8 ConfigMap 110
8.9 健康檢查 112
8.9.1 流程健康檢查 112
8.9.2 應用健康檢查 112
第9章 Kubernetes Service 114
9.1 容器及Pod間通信 115
9.2 kube-proxy 117
9.3 DNS服務發(fā)現(xiàn)機制 118
9.4 Headless服務 119
9.5 Kubernetes服務 120
9.5.1 ClusterIP 122
9.5.2 NodePort 123
9.5.3 LoadBalancer 125
9.5.4 Ingress 125
9.6 網絡策略 127
9.7 完整的Kubernetes服務發(fā)布實踐 128
9.7.1 各Kubernetes集群
LoadBalancer服務發(fā)布 130
9.7.2 Ingress服務發(fā)布 132
9.7.3 服務發(fā)現(xiàn) 133
第10章 Kubernetes網絡 134
10.1 單主機Docker網絡通信 134
10.1.1 Host模式 135
10.1.2 Container模式 135
10.1.3 None模式 136
10.1.4 Bridge模式 136
10.1.5 基礎網絡模型的優(yōu)缺點分析 137
10.2 跨主機Docker網絡通信 137
10.2.1 Flannel網絡方案 139
10.2.2 Calico網絡方案 140
10.2.3 利用Kuryr整合OpenStack與Kubernetes網絡 143
10.2.4 網絡方案對比分析 144
第11章 Kubernetes存儲 145
11.1 存儲使用場景 145
11.2 文件存儲的幾種形式 146
11.3 Flex Volume存儲管理方案 148
11.3.1 為什么需要靈活存儲組件 148
11.3.2 如何實現(xiàn)靈活存儲組件 148
11.4 標準化容器存儲接口CSI 149
第12章 安全及多租戶配額管理 150
12.1 API服務器認證 151