新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
122.1
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
98.6
《
惜华年(全两册)
》
售價:HK$
70.3
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
244.2
編輯推薦:
《 Docker实战(第2版)》在前一版的基础上,*的变化就是增加了关于Docker集群和应用程序编排功能的高级主题。在翻译本书的过程中,Docker的版本已经演进到V19.03,无论是稳定性还是功能扩展性都比刚问世的时候好了很多。本书在总结前一版的基础上对章节进行了更精确的调整,使内容在逻辑上更加合理,读起来更加流畅,更符合阅读习惯。开篇的第Ⅰ和第Ⅱ部分沿用了第1版的大致框架,在内容的深度和材料的准确性方面做了补充。第IⅢ部分的第10~13章则重点阐述在Docker集群上构建、配置、测试、部署、运行应用程序的新功能。另外,结合近年来Docker 本身的发展,作者还做了一些细微的调整与删除,使得本书更加紧凑与完美。
內容簡介:
《 Docker实战(第2版)》聚焦于创建、部署和管理运行在Linux操作系统上的Docker容器中的应用程序。本书对内容做了全面更新,新增了4章,修订了更佳实践和示例。书中首先对Docker模型做了清晰解释,然后开始打包应用程序,安全地测试、安装和运行应用程序,并将它们部署到主机集群中。本书通过示例展示了Docker如何使整个开发生命周期受益,读者将学到从开发、测试机器到进行全面云部署的各种技术。 主要内容 在容器中运行软件 为更好地部署而打包软件 安全和分发容器化应用程序
關於作者:
Jeff Nickoloff有能力构建大型服务,撰写技术文章,并帮助人们实现产品目标,他曾在亚马逊、Limelight Networks和亚利桑那州立大学从事过这些工作。2014年离开亚马逊后,Jeff成立了一家咨询公司,致力于为财富100强公司和初创企业提供工具、培训和实践方案。在2019年,Jeff和Portia Dean共同创立了Topple公司,以提供服务的方式构建生产力软件。Topple公司致力于帮助团队解决工作中的沟通和协调问题,因为这些问题会使整个团队放慢脚步,让业务处于风险中,并且通常还会使工作变得很糟糕。
Stephen Kuenzli在高端制造、银行和电子商务系统中设计、构建、部署和运维高可用性、可扩展的软件系统已有近20年的经验。他拥有系统工程学士学位,并且已学习、使用和构建了许多软件和基础架构工具来交付更好的系统。Stephen喜欢解决具有挑战性的设计问题,并为客户、用户和利益相关者提供安全且令人愉悦的解决方案。他创立并领导着一家名为QualiMente的公司,这家公司致力于帮助企业在AWS上实现安全的迁移和发展。
目錄 :
第1 章 欢迎来到Docker的世界 1
1.1 Docker是什么 2
1.1.1 “hello,world”示例 3
1.1.2 容器 4
1.1.3 容器不是虚拟化 5
1.1.4 在隔离容器中运行软件 5
1.1.5 分发容器 7
1.2 Docker解决了什么问题 7
1.2.1 变得有组织性 8
1.2.2 改善可移植性 9
1.2.3 保护你的计算机 10
1.3 Docker为什么重要 11
1.4 何时、何地使用Docker 12
1.5 更大生态系统中的Docker 13
1.6 从Docker命令行获取帮助 14
1.7 本章小结 14
第Ⅰ部分 进程隔离与环境独立计算
第2 章 在容器中运行软件 19
2.1 控制容器:构建网站监视器 19
2.1.1 创建和启动新容器 20
2.1.2 运行交互式容器 22
2.1.3 罗列、停止、重启和查看容器的输出 23
2.2 被解决的问题和PID命名空间 25
2.3 消除元数据冲突:建立网站农场 28
2.3.1 灵活的容器识别 29
2.3.2 容器的状态和依存关系 32
2.4 构建与环境无关的系统 35
2.4.1 只读文件系统 35
2.4.2 注入环境变量 39
2.5 建立持久的容器 42
2.5.1 自动重启容器 43
2.5.2 使用PID 1和init系统 44
2.6 清除工作 46
2.7 本章小结 48
第3 章 使用Docker安装软件 49
3.1 识别软件 50
3.1.1 命名仓库是什么 50
3.1.2 使用标签 51
3.2 寻找和安装软件 52
3.2.1 从命令行使用Docker注册表 52
3.2.2 使用备用的注册表 53
3.2.3 将镜像作为文件处理 54
3.2.4 从Dockerfile进行安装 55
3.2.5 使用Docker Hub 56
3.3 安装文件和隔离 58
3.3.1 实际的镜像层级 58
3.3.2 层级的关系 60
3.3.3 容器文件系统的抽象和隔离 61
3.3.4 这一工具集和联合文件系统结构的优点 62
3.3.5 联合文件系统的缺点 62
3.4 本章小结 63
第4 章 使用存储和卷 65
4.1 文件树和挂载点 66
4.2 绑定挂载 67
4.3 常驻内存存储 70
4.4 Docker卷 71
4.4.1 卷提供容器无关的数据管理 73
4.4.2 在NoSQL数据库中使用卷 74
4.5 共享挂载点和共享文件 77
4.6 清理卷 81
4.7 使用卷插件的高级存储 83
4.8 本章小结 83
第5 章 单主机网络 85
5.1 网络背景(面向初学者) 85
5.1.1 基本知识:协议、接口和端口 86
5.1.2 深入知识:网络、NAT和端口转发 87
5.2 Docker容器网络 88
5.2.1 创建用户自定义的桥接网络 89
5.2.2 探索桥接网络 91
5.2.3 更多网络类型 94
5.3 特殊容器网络:主机网络和none网络 95
5.4 使用NodePort publishing处理入站流量 96
5.5 容器网络注意事项和定制化 98
5.5.1 没有防火墙或网络策略 98
5.5.2 自定义DNS配置 99
5.5.3 外部化网络管理 103
5.6 本章小结 104
第6 章 通过资源控制来限制风险 105
6.1 设置资源配额 106
6.1.1 内存限制 106
6.1.2 CPU 108
6.1.3 访问设备 111
6.2 共享内存 111
6.3 理解用户 114
6.3.1 使用运行时用户 114
6.3.2 用户和卷 117
6.3.3 用户命名空间和UID重映射 119
6.4 根据功能集调整操作系统功能访问范围 121
6.5 以完全特权运行容器 123
6.6 使用增强的工具加固容器 124
6.7 构建适合用例的容器 126
6.7.1 应用程序 127
6.7.2 高层的系统服务 127
6.7.3 低层的系统服务 128
6.8 本章小结 128
第Ⅱ部分 打包软件进行分发
第7 章 将软件打包到镜像中 133
7.1 从容器构建镜像 133
7.1.1 打包“hello,world”程序 134
7.1.2 准备打包Git程序 135
7.1.3 查看文件系统的更改项 136
7.1.4 提交新的镜像 137
7.1.5 配置镜像属性 138
7.2 深入研究Docker镜像和层级 140
7.2.1 探索联合文件系统 140
7.2.2 重新认识镜像、层级、仓库和标签 143
7.2.3 管理镜像大小和层级的限制 146
7.3 导出和导入平面文件系统 148
7.4 版本控制的实践 151
7.5 本章小结 153
第8 章 使用Dockerfile自动构建镜像 155
8.1 使用Dockerfile打包Git程序 155
8.2 Dockerfile入门 160
8.2.1 元数据指令 160
8.2.2 文件系统指令 165
8.3 在构建下游层级时注入行为 169
8.4 创建可维护的Dockerfile 172
8.5 使用启动脚本和多进程容器 177
8.5.1 验证前提条件 177
8.5.2 初始化进程 179
8.5.3 健康检查的目的和用途 180
8.6 构建加固的应用程序镜像 182
8.6.1 内容可寻址镜像标识符 183
8.6.2 用户权限 183
8.6.3 SUID和SGID权限 186
8.7 本章小结 188
第9 章 公共和私有软件分发 191
9.1 选择分发方法 191
9.1.1 镜像分发频谱 192
9.1.2 选择标准 192
9.2 在托管注册表中发布镜像 195
9.2.1 在Docker Hub的公共仓库中发布镜像 195
9.2.2 私有托管仓库 198
9.3 引入私有注册表 200
9.3.1 使用注册表镜像 202
9.3.2 从注册表中消费镜像 204
9.4 手动发布和分发镜像 205
9.5 镜像源代码分发流程 211
9.6 本章小结 213
第10 章 镜像构建管道 215
10.1 镜像构建管道的目标 215
10.2 构建镜像的模式 217
10.2.1 多合一镜像 217
10.2.2 分离构建时和运行时镜像 218
10.2.3 通过多阶段构建来更改运行时镜像 220
10.3 在构建镜像时记录元数据 222
10.4 在镜像构建管道中测试镜像 229
10.5 标记镜像的模式 232
10.5.1 背景 232
10.5.2 带有标签的持续交付 233
10.5.3 带有具体环境工件的持续交付 233
10.5.4 语义版本控制 235
10.6 本章小结 236
第Ⅲ部分 更高层次的抽象与编排
第11 章 Docker和Compose服务 239
11.1 “Hello World!”服务 240
11.1.1 自动复活和复制 242
11.1.2 自动推出 244
11.1.3 服务运行状况与回滚 246
11.2 使用Compose V3的声明式服务环境 249
11.2.1 YAML入门 251
11.2.2 Compose V3的服务集合 253
11.3 带有状态的服务和保留的数据 258
11.4 使用Compose进行负载均衡、服务发现和联网 260
11.5 本章小结 264
第12 章 一流的配置 265
12.1 配置的分发和管理 266
12.2 分离应用程序和配置 267
12.2.1 使用配置资源 270
12.2.2 部署应用程序 271
12.2.3 直接管理配置资源 273
12.3 一种特殊的配置:机密信息 277
12.4 本章小结 285
第13 章 使用Swarm在Docker主机集群上编排服务 287
13.1 使用Docker Swarm集群 287
13.1.1 Docker Swarm模式介绍 288
13.1.2 部署Swarm集群 289
13.2 将应用程序部署到Swarm集群 290
13.2.1 Docker Swarm集群资源类型介绍 290
13.2.2 使用Docker服务定义应用程序及其依赖项 291
13.2.3 部署应用程序 297
13.3 与Swarm集群内运行的服务通信 303
13.3.1 使用Swarm路由网格将客户端请求路由到服务 304
13.3.2 使用覆盖网络 306
13.3.3 在覆盖网络上发现服务 307
13.3.4 在覆盖网络上隔离服务之间的通信 310
13.3.5 负载均衡 312
13.4 将服务任务放置在集群中 313
13.4.1 复制服务 314
13.4.2 约束任务的运行位置 318
13.4.3 使用全局服务方式在每个节点上部署一个任务 325
13.4.4 将真实的应用程序部署到真实的集群中 326
13.5 本章小结 327
內容試閱 :
自从我们于2013年开始参与以来,Docker和容器社区已经走过很长一段路。自2016年Jeff写作《Docker实战(第2版)》的第1版以来,Docker发生了一些意想不到的变化。值得庆幸的是,大多数面向用户的接口和核心概念都以向后兼容的方式向前演进着。《Docker实战(第2版)》的前三分之二部分针对新增功能或已解决的问题进行了更新。正如预期的那样,上一版的第Ⅲ部分则需要完全重写。自从本书的第1版出版以来,Docker已经在容器的编排、应用程序的连接、专有云容器产品、多容器应用打包和功能服务化平台等方面取得很大的进展。本书的第2版重点介绍Docker容器的基本概念和实践,并避开讲解对于Docker来说过于快速变化的技术。
Docker的变化是开发和使用了几个容器协调器。容器协调器的主要目的是跨主机集群运行应用程序服务。这些容器协调器中著名的Kubernetes已经在业界得到广泛采用,并得到几乎所有主要技术供应商的支持。Cloud Native Computing Foundation是围绕Kubernetes项目成立的基金会,该基金会会做很多与Kubernetes相关的定制化项目,例如,可以将云原生的应用程序重新设计为适合在Kubernetes平台上部署。但重要的是,不要太关注市场营销或特定的容器编排技术。
《Docker实战(第2版)》不涵盖Kubernetes的介绍,原因有两个。
首先,尽管Kubernetes随Docker for Desktop一起提供,但它的体积十分庞大且在不断变化。在短短几章或一本少于400页的书中,都不太可能提供关于这个主题任何有深度的阐述。同时,关于Kubernetes有大量优秀的在线资源和专业书籍。我们希望《Docker实战(第2版)》专注于一个更大的主题——服务编排,而不是在琐碎的地方花费大量精力。
其次,Docker附带了Swarm集群和编排工具。对于较小的或边缘计算环境中的集群,Docker已绰绰有余。大量组织每天都在愉快地使用Swarm,而Swarm非常适合同时开始服务编排和容器开发的初学者。大多数工具和方案都可以简单地从容器转移到服务模式,应用程序开发人员有可能从这种方法中受益,而系统管理员或集群操作人员则可能感到失望。
Docker的下一个的变化是:Docker如今无处不在。Docker for Desktop已经很好地集成在了苹果和微软公司的操作系统中。它向用户隐藏了底层虚拟机的工作机制,在大多数情况下,这是一项成功的举措。在macOS操作系统中,用户体验非常流畅;而在Windows操作系统中,至少在某些时刻也运行良好。Windows用户需要处理来自公司防火墙、激进的防病毒配置、shell程序选项和通过好几层网络进行间接访问的大量配置的变化,而这些变化使得在Windows操作系统中交付书面的配置内容变得异常困难,导致这样做的任何尝试都会在实际进入生产系统之前被淘汰。因此,我们再次将《Docker实战(第2版)》的语法和系统相关材料限定为针对Linux和macOS操作系统。读者可能发现所有示例实际上能够在这些环境中运行,但我们不能保证它们肯定能够运行或者可以合理地指导故障排除工作。
后来,获得安装了Docker的可连接Internet的虚拟机变得微不足道了,每个主流的甚至小型的云服务提供商都提供这些服务。因此,我们删除了与Docker机器和安装Docker有关的材料。相信读者完全能够找到适合自己平台的Docker安装说明。如今,读者可以直接选择一种容器优先的云平台,如AWS ECS。《Docker实战(第2版)》不会介绍这些平台,因为它们都非常独特,难以在《Docker实战(第2版)》中详细讨论。不过这些平台都有完善的方案和文档,读者可以自行搜索相关资料。
后,容器和网络都拥有复杂的历史。在过去几年里,随着服务网格平台和其他补充技术突然出现,容器和网络之间的交互变得更复杂了。服务网格是可感知应用程序的智能管道的平台,可提供微服务网络实践,它们使用代理来提供点对点加密、身份验证、授权、断路器和高级请求路由技术。《Docker实战(第2版)》介绍的容器网络基础知识被证明对理解和评估服务网格技术很有用。
《Docker实战(第2版)》旨在深入介绍Docker的基础知识。读者可能无法在日常应用这项技术的过程中学到所有需要的知识,但是只要掌握《Docker实战(第2版)》介绍的基础知识和技能,就可以更快地学习高级主题并追求更高的目标。祝你在探索容器的征程中一路顺风!