具体描述
本书围绕“Docker该如何应用到生产环境”这一核心问题展开。在本书中,读者将接触到多个IT企业应用Docker到生产环境的成功案例,了解Docker实际投产时将会面临的问题,以及它与现有基础设施存在的矛盾与冲突,了解构建Docker生态系统所需的配套设施,包括安全、构建镜像、持续集成/持续交付、镜像存储、配置管理、网络实现、服务发现、持久化存储以及日志监控等模块具体选型方案及利弊所在。本书编写时一些案例参考的Docker版本是Docker 1.6版本或Docker 1.7。
本书要求读者具备一定的容器管理和运维的基础知识,适合在生产环境中使用Docker的相关技术人员阅读,尤其适合具有中高级DevOps和运维背景的读者阅读。
作者简介
作者介绍
Joe Johnston是一名全栈开发人员、企业家及服务于旧金山创业公司的顾问。他是Airstack(一家微服务基础设施创业公司)、California Labs和Connect.Me的联合创始人。
Antoni Batchelli是PeerSpace公司 的工程副总裁和PalletOps公司(一家基础设施自动化咨询公司)的联合创始人。他的主要工作是将函数式编程语言与基础设施结合,以及帮助工程团队打造杰出的软件。
Justin Cormack是一名顾问,他对开源软件、云计算及分布式系统方面的创新机会尤其感兴趣。他目前就职于unikernels。读者可以在GitHub上找到他。
John Fiedler是RelateIQ公司的工程运营总监。他的团队专注于基于Docker的解决方案,为其SaaS基础设施及DevOps提供动力。
Milos Gajdos不仅是一名独立咨询师,还是Infrahackers有限公司的基础设施的负责人,他协助企业更好地理解Linux容器技术,并实现基于容器的基础设施。他偶尔会撰写一些有关容器的博客文章。
译者介绍
吴佳兴,毕业于华东理工大学计算机系,目前是携程网系统研发团队的一名DevOps工程师,主要研究的方向有Python开发、运维自动化、配置管理及PaaS平台的构建等,2014年年底有幸加入DockOne社区,作为译者,利用闲暇时间为社区贡献一些微薄的力量。
梁晓勇,毕业于厦门大学,现任某互联网金融公司架构师,DockOne社区编外人员,长期奋战在技术研发一线,在网络管理、技术开发、架构设计等方面略有心得。热爱互联网技术,积极投身开源社区,对Docker等容器技术具有浓厚兴趣。
目录信息
1.1 术语 1
1.1.1 镜像与容器 1
1.1.2 容器与虚拟机 1
1.1.3 持续集成/持续交付 2
1.1.4 宿主机管理 2
1.1.5 编排 2
1.1.6 调度 2
1.1.7 发现 2
1.1.8 配置管理 2
1.2 从开发环境到生产环境 3
1.3 使用Docker的多种方式 3
1.4 可预期的情况 4
第2章 技术栈 7
2.1 构建系统 8
2.2 镜像仓库 8
2.3 宿主机管理 8
2.4 配置管理 9
2.5 部署 9
2.6 编排 9
第3章 示例:极简环境 11
3.1 保持各部分的简单 11
3.2 保持流程的简单 13
3.3 系统细节 14
3.4 集群范围的配置、通用配置及本地配置 18
3.5 部署服务 19
3.6 支撑服务 21
3.7 讨论 21
3.8 未来 22
3.9 小结 22
第4章 示例:Web环境 23
4.1 编排 24
4.1.1 让服务器上的Docker进入准备运行容器的状态 25
4.1.2 让容器运行 25
4.2 连网 28
4.3 数据存储 28
4.4 日志 29
4.5 监控 30
4.6 无须担心新依赖 30
4.7 零停机时间 30
4.8 服务回滚 31
4.9 小结 31
第5章 示例:Beanstalk环境 33
5.1 构建容器的过程 34
5.2 日志 35
5.3 监控 36
5.4 安全 36
5.5 小结 36
第6章 安全 37
6.1 威胁模型 37
6.2 容器与安全性 38
6.3 内核更新 39
6.4 容器更新 39
6.5 suid及guid二进制文件 40
6.6 容器内的root 40
6.7 权能 41
6.8 seccomp 41
6.9 内核安全框架 42
6.10 资源限制及cgroup 42
6.11 ulimit 43
6.12 用户命名空间 43
6.13 镜像验证 44
6.14 安全地运行Docker守护 进程 45
6.15 监控 45
6.16 设备 45
6.17 挂载点 45
6.18 ssh 46
6.19 私钥分发 46
6.20 位置 46
第7章 构建镜像 49
7.1 此镜像非彼镜像 49
7.1.1 写时复制与高效的镜像存储与分发 50
7.1.2 Docker对写时复制的使用 51
7.2 镜像构建基本原理 52
7.2.1 分层的文件系统和空间控管 54
7.2.2 保持镜像小巧 57
7.2.3 让镜像可重用 58
7.2.4 在进程无法被配置时,通过环境变量让镜像可配置 59
7.2.5 让镜像在Docker变化时对自身进行重新配置 62
7.2.6 信任与镜像 67
7.2.7 让镜像不可变 67
7.3 小结 68
第8章 存储Docker镜像 69
8.1 启动并运行存储的Docker镜像 69
8.2 自动化构建 70
8.3 私有仓库 71
8.4 私有registry的扩展 71
8.4.1 S3 72
8.4.2 本地存储 72
8.4.3 对registry进行负载均衡 72
8.5 维护 73
8.6 对私有仓库进行加固 73
8.6.1 SSL 73
8.6.2 认证 73
8.7 保存/载入 74
8.8 最大限度地减小镜像体积 74
8.9 其他镜像仓库方案 75
第9章 CI/CD 77
9.1 让所有人都进行镜像构建与推送 79
9.2 在一个构建系统中构建所有镜像 80
9.3 不要使用或禁止使用非标准做法 80
9.4 使用标准基础镜像 80
9.5 使用Docker进行集成测试 81
9.6 小结 81
第10章 配置管理 83
10.1 配置管理与容器 83
10.2 面向容器的配置管理 84
10.2.1 Chef 85
10.2.2 Ansible 87
10.2.3 Salt Stack 89
10.2.4 Puppet 90
10.3 小结 92
第11章 Docker存储引擎 93
11.1 AUFS 94
11.2 DeviceMapper 99
11.3 BTRFS 104
11.4 OverlayFS 108
11.5 VFS 112
11.6 小结 114
第12章 Docker网络实现 115
12.1 网络基础知识 116
12.2 IP地址的分配 119
12.3 域名解析 124
12.4 服务发现 128
12.5 Docker高级网络 132
12.5.1 网络安全 132
12.5.2 多主机的容器间通信 136
12.5.3 共享网络命名空间 138
12.6 IPv6 141
12.7 小结 142
第13章 调度 145
13.1 什么是调度 146
13.2 调度策略 147
13.3 Mesos 147
13.4 Kubernetes 148
13.5 OpenShift 149
第14章 服务发现 153
14.1 DNS服务发现 155
14.2 Zookeeper 159
14.3 基于Zookeeper的服务发现 160
14.4 etcd 161
14.5 consul 165
14.5.1 基于consul的服务发现 167
14.5.2 registrator 168
14.6 Eureka 171
14.7 Smartstack 174
14.7.1 基于Smartstack的服务发现 175
14.7.2 Nerve 175
14.7.3 Synapse 176
14.8 nsqlookupd 177
14.9 小结 177
第15章 日志和监控 179
15.1 日志 179
15.1.1 Docker原生的日志 支持 180
15.1.2 连接到Docker容器 181
15.1.3 将日志导出到宿主机 182
15.1.4 发送日志到集中式的日志 平台 183
15.1.5 在其他容器一侧收集 日志 184
15.2 监控 185
15.2.1 基于宿主机的监控 187
15.2.2 基于Docker守护进程的 监控 188
15.2.3 基于容器的监控 191
15.3 小结 194
· · · · · · (收起)
读后感
用户评价
这本书的覆盖面之广,让人印象深刻,它并没有停留在理论的层面,而是深入到了实际操作的每一个环节。从一开始的环境准备,到后面复杂的网络配置和数据持久化策略,作者都展现了极强的实战经验。特别是关于容器编排的部分,讲解得非常透彻,清晰地梳理了不同工具之间的异同以及在实际场景中的适用性,这对于我这种想把Docker从开发环境顺利迁移到生产环境的人来说,简直是如获至宝。书中的代码示例都是可以直接运行的,而且针对生产环境的特殊需求,例如安全加固、日志收集和监控集成等方面,都有专门的章节进行深入探讨,这使得全书的知识体系非常完整且接地气。
阅读这本书的过程,就像是跟着一位经验丰富的技术专家进行一对一的指导。作者的叙述方式非常具有感染力,他不仅仅是罗列技术点,更重要的是分享了在真实生产环境中遇到的陷阱和解决方案。比如,在处理高可用性集群部署时,书中详细分析了不同存储驱动在性能和可靠性上的权衡,这一点在很多教程中都是一带而过的。更令人称道的是,作者对‘为什么’的解释非常到位,这帮助我构建起更深层次的理解,而不是仅仅停留在‘如何做’的层面。这种注重底层逻辑和最佳实践的编写风格,极大地提升了我的架构设计能力。
我原以为这会是一本比较枯燥的技术手册,但出乎意料的是,作者的文笔流畅且逻辑严密。结构安排上,它巧妙地平衡了基础知识的巩固和高级特性的介绍。对于初学者而言,前几章打下了坚实的基础,而当我翻阅到后半部分关于灰度发布和蓝绿部署的策略时,立刻感受到了它在复杂运维场景中的指导价值。书中的图表和流程图设计得非常直观,有效降低了理解复杂系统交互的难度。这本书的价值在于它提供了一个清晰的路线图,指导读者如何从零开始构建一个健壮、可扩展的容器化服务。
这本书的实操性远超我的预期,它不是那种只停留在概念层面、看完后仍然不知道如何下手的书籍。它更像是一份详尽的实战手册,里面夹杂着许多在实际项目中积累下来的“小窍门”和“避坑指南”。无论是关于卷的挂载策略在不同操作系统下的差异处理,还是如何利用特定的监控工具(书中提及的那些)对容器资源进行精细化监控,都给出了具体的操作步骤和配置示例。读完这本书,我感觉自己手中不再是空泛的概念,而是拥有了一套可以直接应用于日常工作的工具箱和方法论,极大地提升了我解决实际问题的信心和效率。
这本书最大的亮点在于它对‘生产环境’这一概念的深度挖掘。很多容器相关的书籍往往只关注开发和测试流程,但这本书直面了运维团队在面对大规模、高并发应用时所面临的挑战。从性能调优到资源隔离的精细控制,再到灾难恢复的预案设计,每一个环节都体现了作者对稳定性和安全性的极致追求。尤其是在安全章节中,对镜像供应链管理和运行时安全策略的讨论,是目前市面上同类书籍中较为少见的深度。它真正做到了从一个纯粹的开发者视角,成功过渡到成熟的运维工程师视角。
适合初学者,有几章原理讲解还行,不过现在看已经过时了
不错的一本docker实战的书,技术原理和经验都讲得不错。
不错的一本docker实战的书,技术原理和经验都讲得不错。
言简意赅,值得细品
英文原版 Docker in the Trenches : Successful Production Deployment 作者也不对。