本书从实践者的角度,在讲解Docker高级实践技巧的同时,深入到源代码层次,为读者梳理出Docker容器技术和基于Docker的容器云技术(如Kubernetes)的实现方法和设计思路,帮助读者理解如何在实际场景中利用Docker解决问题并启发新的思考。全书包括两部分,第一部分深入解读Docker容器技术,包括Docker入门、架构总览、Docker容器核心原理解读,以及Docker高级实践技巧;第二部分深入解读基于Docker的主流容器云技术,讲解了构建自己的容器云的方法,深入分析了3类Docker容器云技术的实现方法的设计思路,包括专注Docker容器编排与部署的容器云(Compose、Machine、Swarm、Fleet)、专注应用支撑的容器云(Flynn、Deis),以及一切皆容器的Kubernetes。
第一部分 Docker深入解读
第1章 从容器到容器云 2
1.1 云计算平台 2
1.2 容器,新的革命 3
1.3 进化:从容器到容器云 7
第2章 Docker基础 8
2.1 Docker的安装 8
2.2 Docker操作参数解读 9
2.3 搭建你的第一个Docker应用栈 16
2.3.1 Docker集群部署 16
2.3.2 第一个Hello World 17
2.3.3 开发、测试和发布一体化 27
第3章 Docker核心原理解读 28
3.1 Docker背后的内核知识 28
3.1.1 namespace资源隔离 28
3.1.2 cgroups资源限制 45
3.2 Docker架构概览 53
3.3 client和daemon 55
3.3.1 client模式 55
3.3.2 daemon模式 57
3.3.3 从client到daemon 63
3.4 libcontainer 66
3.4.1 libcontainer的工作方式 68
3.4.2 libcontainer实现原理 69
3.4.3 使用nsinit与libcontainer进行交互 74
3.5 Docker镜像管理 76
3.5.1 什么是Docker镜像 76
3.5.2 Docker镜像关键概念 78
3.5.3 Docker镜像操作解析 80
3.5.4 Docker容器的迁移方法 84
3.6 Docker存储驱动 85
3.6.1 存储驱动的功能与管理 86
3.6.2 aufs与Device Mapper驱动 87
3.7 Docker数据卷 93
3.7.1 数据卷的使用方式 94
3.7.2 数据卷原理解读 98
3.8 Docker网络管理 102
3.8.1 Docker网络基础 102
3.8.2 Docker daemon网络配置原理 107
3.8.3 libcontainer网络配置原理 111
3.8.4 Link原理解析 115
3.9 Docker与容器安全 118
3.9.1 Docker的安全机制 118
3.9.2 Docker安全问题 122
3.9.3 Docker安全的解决方案 126
第4章 Docker高级实践技巧 138
4.1 容器化思维 138
4.1.1 SSH服务器的替代方案 139
4.1.2 Docker内应用日志管理方案 139
4.1.3 其他技巧汇总 140
4.2 Docker高级网络实践 142
4.2.1 玩转Linux network namespace 143
4.2.2 pipework原理解析 148
4.2.3 pipework跨主机通信 154
4.2.4 OVS划分VLAN 159
4.2.5 OVS隧道模式 163
4.3 Dockerfile最佳实践 175
4.3.1 Dockerfile的使用 176
4.3.2 Dockerfile实践心得 180
4.4 Docker容器的监控手段 182
4.4.1 Docker容器监控维度 182
4.4.2 容器监控命令 183
4.4.3 常用的容器监控工具 186
4.5 容器化应用构建的基础:高可用配置中心 189
4.5.1 etcd经典应用场景 190
4.5.2 etcd实现原理 194
第二部分 Docker云平台解读
第5章 构建自己的容器云 210
5.1 再谈云平台的层次架构 210
5.2 从小工到专家 213
第6章 专注编排与部署:三剑客与Fleet 218
6.1 编排小神器Fig 218
6.1.1 再谈容器编排与部署 218
6.1.2 Compose原理:一探究竟 221
6.2 环境透明化工具Machine 225
6.2.1 Machine与虚拟机软件 226
6.2.2 Machine与IaaS平台 227
6.2.3 Machine小结 228
6.3 集群抽象工具Swarm 229
6.3.1 Swarm简介 229
6.3.2 试用Swarm 230
6.3.3 Swarm集群的多种创建方式 231
6.3.4 Swarm对请求的处理 233
6.3.5 Swarm集群的调度策略 233
6.3.6 Swarm与Machine 234
6.4 编排之秀Fleet 235
6.4.1 旧问题新角度:Docker distro 235
6.4.2 Fleet的原理剖析 239
第7章 专注应用支撑和运行时:Flynn 和Deis 245
7.1 Flynn,一个小而美的两层架构 245
7.1.1 第0层:容器云的基础设施 246
7.1.2 第1层:容器云的功能框架 246
7.1.3 Flynn体系架构与实现原理 247
7.2 谈谈Deis与Flynn 257
7.2.1 应用发布上的比较 258
7.2.2 关于Deis的一些思考 260
第8章 一切皆容器:Kubernetes 261
8.1 Kubernetes简介 261
8.2 Kubernetes的设计解读 262
8.2.1 一个典型案例:Guestbook. 263
8.2.2 Kubernetes核心概念剖析 265
8.3 Kubernetes核心组件解读 294
8.3.1 APIServer 294
8.3.2 Scheduler 301
8.3.3 Controller Manager 309
8.3.4 kubelet 314
8.3.5 kube-proxy 320
8.3.6 核心组件协作流程 325
8.4 Kubernetes用户认证授权与资源管理 328
8.4.1 namespace解析 328
8.4.2 基于token文件或客户端证书的认证机制 333
8.4.3 基于访问规则的授权机制 334
8.4.4 基于资源的授权控制AdmissionControl 336
8.5 Kubernetes网络核心原理 347
8.5.1 单pod单IP模型 348
8.5.2 pod和网络容器 350
8.5.3 实现Kubernetes的网络模型 353
8.6 Kubernetes高级实践 356
8.6.1 Kubernetes高级实践之应用健康检查 356
8.6.2 Kubernetes高级实践之高可用性 358
8.6.3 Kubernetes高级实践之日志 362
8.6.4 Kubernetes高级实践之集成DNS 364
8.6.5 Kubernetes高级实践之容器上下文环境 366
8.7 不要停止思考 368
第三部分 附录
附录A Docker的安装 372
附录B 阅读Docker源代码的神兵利器 379
附录C 快速熟悉开源项目 388
附录D cgroups的测试与使用 391
附录E cgroups子系统配置参数介绍 395
附录F Kubernetes的安装 400
后记 403
——肖德时,数人科技CTO
“本书非常细致地讲解了Docker技术的来龙去脉和技术细节,更为难得是还加入了Docker生态当中的其他技术。Docker这项技术本身就是将多种思想和技术融合的产物,从生态的视角去解读技术的来龙去脉将极大地促进读者对云计算和容器技术的重新思考。”
——程显峰,OpenAPM首席运营官
“Docker颠覆了容器技术,也将容器技术带到了新的高度。InfoQ从2014年初就开始密切关注容器技术,见证并切身参与了容器技术的发展。作为我们的优秀作者,浙江大学SEL实验室在InfoQ撰写了很多与Docker、Kubernetes相关的技术文章,得到了广大读者的肯定。希望这本书能推动容器技术在中国的落地。”
——郭蕾,InfoQ主编
“浙江大学SEL实验室属于国内较早接触并研究开源PaaS技术的团队之一,从传统PaaS的开源代表CloudFoundry、OpenShift,到新一代基于Docker的PaaS平台如DEIS、Flynn等,他们均有深入的研究和实践经验。更为难得的是,他们不仅参与开源贡献,而且笔耕不辍,通过博客、论坛等方式积极分享有深度、有内涵的技术文章,并广泛参与国内PaaS届各种技术交流会议。华为PaaS团队也在与之交流中汲取了不少营养。此次,他们将近年来对Docker容器和Kubernetes、DEIS、Flynn等PaaS开源平台的研究成果结集成册,内容详尽且深入浅出,。我相信,无论是入门者还是老手,都能够从中获益。”
——刘赫伟,华为中央软件院
“容器技术在大型互联网企业中已广泛应用,而Docker是容器技术中的杰出代表。本书不仅介绍了Docker基础知识,而且进行了代码级的深入分析,并通过对Kubernetes等技术的讲解延伸至集群操作系统,以及对Docker生态领域的思考,同时结合了大量实践,内容丰富,值得拥有。”
——王炜煜,百度运维部高级架构师,JPaaS私有云项目负责人
“Docker作为操作系统层面轻量级的虚拟化技术,凭借简易的使用、快速的部署以及灵活敏捷的集成支持等优势,奠定了Docker如今在PaaS领域的江湖地位。 浙江大学SEL实验室在云计算和 PaaS领域耕耘多年, 积累了丰富的经验。本书既有对Docker源代码层面的深度解读,也有实战经验的分享,希望这本书能够帮助Docker开发者在技术上更上一层楼。”
——李三红,蚂蚁金服基础技术部JVM Architect