作者:
[美]杰夫·尼克罗夫(Jeff Nickoloff)
/
[美]斯蒂芬·库恩斯利(Stephen Kuenzli)
出版社: 清华大学出版社
译者: 耿苏宁
出版年: 2021-3
定价: 79.8
装帧: 平装
ISBN: 9787302574675
出版社: 清华大学出版社
译者: 耿苏宁
出版年: 2021-3
定价: 79.8
装帧: 平装
ISBN: 9787302574675
豆瓣评分
内容简介 · · · · · ·
和第1版相比,2版新增4章:最佳实践案例和全面升级并更新的内容。
除理论知识外,本书还附有大量关于打包、测试、安装、运行应用程序并将其部署到主机集群中的实用练习。
你将理解Docker使整个开发周期受益的诸多原因,还能掌握从开发和测试机器到实现全面云部署的各种技术。
主要内容
在容器中运行软件
为更好地部署而打包软件
加固和分发容器化应用程序
作者简介 · · · · · ·
Jeff Nickoloff 和 Stephen Kuenzli 在设计、构建、部署和运营高可用且可扩展的软件系统方面已有近20年的经验,他们是真正的大师。
目录 · · · · · ·
第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 Docker是什么 2
1.1.1 “hello,world”示例 3
1.1.2 容器 4
1.1.3 容器不是虚拟化 5
1.1.4 在隔离容器中运行软件 5
· · · · · · (更多)
第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
· · · · · · (收起)
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
· · · · · · (收起)
原文摘录 · · · · · ·
Docker实战(第2版)的书评 · · · · · · ( 全部 4 条 )
翻译你负点责任好吗?
为了出名,不要face了还?你翻译的这是啥,我一个前端都看不下去了,什么玩意,直接用工具翻译?xx实战系列一直是非常优秀的“入门书籍”,被你们给践踏了,真的是惋惜,能给下架吗。书确实不错,适合入门,循序渐进。胡震,杨润青,黄帅,你们到底是谁,给我站出来。。。。。...
(展开)
评《Docker实战》
文章有错 ,‘在容器中运行软件 ’这一章中,根据书中的命令行会报错。实际上应该分为4步1.docker run -d --name web nginx:laest 2.docker run -interactive --tty --link web:web --name web_test busybox:latest /bin/sh 3.docker run -d --name mailer dockerinaction/ch2...
(展开)
> 更多书评 4篇
论坛 · · · · · ·
屎一样的翻译,就您也配叫翻译? | 来自越前 | 2022-01-06 09:54:02 |
这本书的其他版本 · · · · · · ( 全部4 )
-
电子工业出版社 (2017)7.4分 49人读过
-
Manning Publications (2016)8.2分 50人读过
-
Manning Publications (2019)8.0分 24人读过
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有19人想读,手里有一本闲着?
订阅关于Docker实战(第2版)的评论:
feed: rss 2.0
0 有用 lazybone 2022-08-10 23:42:13
粗略的过了一遍。翻译得比较差。
1 有用 阿健 2022-03-14 15:13:48
看了第一版的评价,普遍反映翻译太差。我直接读的第二版,头两三章还勉强,后面有些内容完美读不懂,我是知道Docker基本原理回来查漏补缺的,要是零基础的人读估计不知所云。
1 有用 lulu 2023-03-27 15:56:57 浙江
求你们别翻译书了, 好书都被你们糟蹋了. 你们看看你们多少好书被你们翻译烂了.
1 有用 lulu 2023-03-27 15:56:57 浙江
求你们别翻译书了, 好书都被你们糟蹋了. 你们看看你们多少好书被你们翻译烂了.
0 有用 lazybone 2022-08-10 23:42:13
粗略的过了一遍。翻译得比较差。
1 有用 阿健 2022-03-14 15:13:48
看了第一版的评价,普遍反映翻译太差。我直接读的第二版,头两三章还勉强,后面有些内容完美读不懂,我是知道Docker基本原理回来查漏补缺的,要是零基础的人读估计不知所云。