第1章 全面认识Docker 1
1.1 容器技术 1
1.1.1 什么是容器 1
1.1.2 容器与虚拟机之间的区别 3
1.1.3 容器究竟解决了什么问题 4
1.1.4 容器的优点 5
1.1.5 容器的缺点 6
1.1.6 容器的分类 7
1.2 Docker技术 8
1.2.1 什么是Docker 8
1.2.2 Docker的由来 9
1.2.3 Docker究竟是什么 9
1.3 Docker的架构与组成 10
1.3.1 Docker的架构 10
1.3.2 Docker中应用系统的存在形式 12
1.4 为什么使用Docker 12
1.4.1 Docker的应用场景 12
1.4.2 Docker可以解决哪些问题 13
1.4.3 Docker的应用成本 13
第2章 初步体验Docker 15
2.1 在Windows中安装Docker 15
2.1.1 通过Boot2Docker体验Docker 15
2.1.2 通过Docker Desktop体验Docker 22
2.1.3 搭建第一个Docker应用:Hello world 25
2.2 在Ubuntu中安装Docker 27
2.2.1 通过远程仓库安装Docker 27
2.2.2 通过软件包安装Docker 28
2.2.3 测试安装的结果 29
第3章 Docker基本管理 30
3.1 镜像管理 30
3.1.1 查找镜像 30
3.1.2 下载镜像 31
3.1.3 列出本地镜像 32
3.1.4 删除镜像 32
3.1.5 查看镜像 32
3.1.6 构建镜像 35
3.1.7 镜像标签管理 37
3.2 容器管理 38
3.2.1 创建容器 38
3.2.2 查看容器 40
3.2.3 启动容器 41
3.2.4 停止容器 41
3.2.5 删除容器 42
3.3 网络管理 42
3.3.1 Docker网络原理 42
3.3.2 网络模式 44
3.3.3 Docker容器的互连 46
3.3.4 容器与外部网络的互连 47
第4章 Kubernetes初步入门 49
4.1 Kubernetes技术 49
4.1.1 什么是Kubernetes 49
4.1.2 Kubernetes的发展历史 49
4.1.3 为什么使用Kubernetes 50
4.2 Kubernetes重要概念 51
4.2.1 Cluster(集群) 51
4.2.2 Master(主控) 51
4.2.3 Node(节点) 52
4.2.4 Pod 53
4.2.5 服务 53
4.2.6 卷 54
4.2.7 命名空间 54
第5章 安装Kubernetes 55
5.1 通过软件包管理工具安装Kubernetes 55
5.1.1 软件包管理工具 55
5.1.2 节点规划 56
5.1.3 安装前准备 57
5.1.4 etcd集群配置 57
5.1.5 Master节点的配置 63
5.1.6 Node节点的配置 65
5.1.7 配置网络 68
5.2 通过二进制文件安装Kubernetes 69
5.2.1 安装前准备 69
5.2.2 部署etcd 73
5.2.3 部署flannel网络 76
5.2.4 部署Master节点 77
5.2.5 部署Node节点 80
5.3 通过源代码安装Kubernetes 83
5.3.1 本地二进制文件编译 83
5.3.2 Docker镜像编译 84
第6章 Kubernetes命令行工具 85
6.1 kubectl的使用方法 85
6.1.1 kubectl用法概述 85
6.1.2 kubectl子命令 87
6.1.3 Kubernetes资源对象类型 89
6.1.4 kubectl输出格式 90
6.1.5 kubectl命令举例 90
6.2 kubeadm的使用方法 93
6.2.1 kubeadm安装方法 94
6.2.2 kubeadm基本语法 95
6.2.3 部署Master节点 95
6.2.4 部署Node节点 97
6.2.5 重置节点 97
第7章 运行应用 99
7.1 Deployment 99
7.1.1 什么是Deployment 99
7.1.2 Deployment与ReplicaSet 100
7.1.3 运行Deployment 100
7.1.4 使用配置文件 107
7.1.5 扩容和缩容 112
7.1.6 故障转移 114
7.1.7 通过标签控制Pod的位置 116
7.1.8 删除Deployment 118
7.1.9 DaemonSet 118
7.2 Job 121
7.2.1 什么是Job 121
7.2.2 Job失败处理 123
7.2.3 Job的并行执行 124
7.2.4 Job的定时执行 125
第8章 通过服务访问应用 127
8.1 服务及其功能 127
8.1.1 服务基本概念 127
8.1.2 服务的功能原理 128
8.2 管理服务 129
8.2.1 创建服务 129
8.2.2 查看服务 132
8.2.3 删除服务 133
8.3 外部网络访问服务 133
8.3.1 kube-proxy结合ClusterIP 134
8.3.2 通过NodePort访问服务 135
8.3.3 通过负载均衡访问服务 137
8.4 通过CoreDNS访问应用 138
8.4.1 CoreDNS简介 138
8.4.2 安装CoreDNS 138
第9章 存储管理 147
9.1 存储卷 147
9.1.1 什么是存储卷 147
9.1.2 emptyDir卷 148
9.1.3 hostPath卷 151
9.1.4 NFS卷 152
9.1.5 Secret卷 153
9.1.6 iSCSI卷 156
9.2 持久化存储卷 157
9.2.1 什么是持久化存储卷 157
9.2.2 持久化存储卷请求 157
9.2.3 持久化存储卷的生命周期 158
9.2.4 持久化存储卷静态绑定 159
9.2.5 持久化存储卷动态绑定 162
9.2.6 回收 167
第10章 Kubernetes软件包管理 170
10.1 Helm 170
10.1.1 Helm相关概念 170
10.1.2 Tiller 171
10.1.3 Chart 171
10.1.4 Repository 171
10.1.5 Release 171
10.2 安装Helm 172
10.2.1 安装客户端 172
10.2.2 安装服务器端Tiller 174
10.3 Chart文件结构 176
10.4 使用Helm 177
10.4.1 软件仓库的管理 177
10.4.2 查找Chart 178
10.4.3 安装Chart 180
10.4.4 查看已安装Chart 183
10.4.5 删除Release 183
第11章 Kubernetes网络管理 185
11.1 Kubernetes网络基础 185
11.1.1 Kubernetes网络模型 185
11.1.2 命名空间 186
11.1.3 veth网络接口 186
11.1.4 netfilter/iptables 187
11.1.5 网桥 187
11.1.6 路由 187
11.2 Kubernetes网络实现 188
11.2.1 Docker与Kubernetes网络比较 188
11.2.2 容器之间的通信 192
11.2.3 Pod之间的通信 194
11.2.4 Pod和服务之间的通信 197
11.3 Flannel 206
11.3.1 Flannel简介 206
11.3.2 安装Flannel 207
第12章 Kubernetes Dashboard 212
12.1 Kubernetes Dashboard配置文件 212
12.1.1 Kubernetes角色控制 212
12.1.2 kubernetes-dashboard.yaml 213
12.2 安装Kubernetes Dashboard 218
12.2.1 官方安装方法 219
12.2.2 自定义安装方法 219
12.3 Dashboard使用方法 222
12.3.1 Dashboard概况 222
12.3.2 通过Dashboard创建资源 224
写在最后 226