[202103][Docker 实战][第2版][耿苏宁][译]
https://github.com/dockerinaction
Dockerfile reference | Docker Docs
https://docs.docker.com/reference/dockerfile/
第1章 欢迎来到 Docker 的世界
1.1 Docker 是什么
1.1.1 “hello world”示例
1.1.2 容器
1.1.3 容器不是虚拟化
1.1.4 在隔离容器中运行软件
1.1.5 分发容器
1.2 Docker 解决了什么问题
1.2.1 变得有组织性
1.2.2 改善可移植性
1.2.3 保护你的计算机
1.3 Docker 为什么重要
1.4 何时、何地使用 Docker
1.5 更大生态系统中的 Docker
1.6 从 Docker 命令行获取帮助
1.7 本章小结
第1部分 进程隔离与环境独立计算
第2章 在容器中运行软件
2.1 控制容器:构建网站监视器
2.1.1 创建和启动新容器
2.1.2 运行交互式容器
2.1.3 罗列、停止、重启和查看容器的输出
2.2 被解决的问题和 PID 命名空间
2.3 消除元数据冲突:建立网站农场
2.3.1 灵活的容器识别
2.3.2 容器的状态和依存关系
2.4 构建与环境无关的系统
2.4.1 只读文件系统
2.4.2 注入环境变量
2.5 建立持久的容器
2.5.1 自动重启容器
2.5.2 使用 PID 1 和 init 系统
2.6 清除工作
2.7 本章小结
第3章 使用 Docker 安装软件
3.1 识别软件
3.1.1 命名仓库是什么
3.1.2 使用标签
3.2 寻找和安装软件
3.2.1 从命令行使用 Docker 注册表
3.2.2 使用备用的注册表
3.2.3 将镜像作为文件处理
3.2.4 从 Dockerfile 进行安装
3.2.5 使用 Docker Hub
3.3 安装文件和隔离
3.3.1 实际的镜像层级
3.3.2 层级的关系
3.3.3 容器文件系统的抽象和隔离
3.3.4 这一工具集和联合文件系统结构的优点
3.3.5 联合文件系统的缺点
3.4 本章小结
第4章 使用存储和卷
4.1 文件树和挂载点
4.2 绑定挂载
4.3 常驻内存存储
4.4 Docker 卷
4.4.1 卷提供容器无关的数据管理
4.4.2 在 NoSQL 数据库中使用卷
4.5 共享挂载点和共享文件
4.6 清理卷
4.7 使用卷插件的高级存储
4.8 本章小结
第5章 单主机网络
5.1 网络背景(面向初学者)
5.1.1 基本知识:协议、接口和端口
5.1.2 深入知识:网络、NAT 和端口转发
5.2 Docker 容器网络
5.2.1 创建用户自定义的桥接网络
5.2.2 探索桥接网络
5.2.3 更多网络类型
5.3 特殊容器网络:主机网络和 none 网络
5.4 使用 NodePort publishing 处理入站流量
5.5 容器网络注意事项和定制化
5.5.1 没有防火墙或网络策略
5.5.2 自定义 DNS 配置
5.5.3 外部化网络管理
5.6 本章小结
第6章 通过资源控制来限制风险
6.1 设置资源配额
6.1.1 内存限制
6.1.2 CPU
6.1.3 访问设备
6.2 共享内存
6.3 理解用户
6.3.1 使用运行时用户
6.3.2 用户和卷
6.3.3 用户命名空间和 UID 重映射
6.4 根据功能集调整操作系统功能访问范围
6.5 以完全特权运行容器
6.6 使用增强的工具加固容器
6.7 构建适合用例的容器
6.7.1 应用程序
6.7.2 高层的系统服务
6.7.3 低层的系统服务
6.8 本章小结
第2部分 打包软件进行分发
第7章 将软件打包到镜像中
7.1 从容器构建镜像
7.1.1 打包“hello,world”程序
7.1.2 准备打包 Git 程序
7.1.3 查看文件系统的更改项
7.1.4 提交新的镜像
7.1.5 配置镜像属性
7.2 深入研究 Docker 镜像和层级
7.2.1 探索联合文件系统
7.2.2 重新认识镜像、层级、仓库和标签
7.2.3 管理镜像大小和层级的限制
7.3 导出和导入平面文件系统
7.4 版本控制的最佳实践
7.5 本章小结
第8章 使用 Dockerfile 自动构建镜像
8.1 使用 Dockerfile 打包 Git 程序
8.2 Dockerfile 入门
8.2.1 元数据指令
8.2.2 文件系统指令
8.3 在构建下游层级时注入行为
8.4 创建可维护的 Dockerfile
8.5 使用启动脚本和多进程容器
8.5.1 验证前提条件
8.5.2 初始化进程
8.5.3 健康检查的目的和用途
8.6 构建加固的应用程序镜像
8.6.1 内容可寻址镜像标识符
8.6.2 用户权限
8.6.3 SUID 和 SGID 权限
8.7 本章小结
第9章 公共和私有软件分发
9.1 选择分发方法
9.1.1 镜像分发频谱
9.1.2 选择标准
9.2 在托管注册表中发布镜像
9.2.1 在 Docker Hub 的公共仓库中发布镜像
9.2.2 私有托管仓库
9.3 引入私有注册表
9.3.1 使用注册表镜像
9.3.2 从注册表中消费镜像
9.4 手动发布和分发镜像
9.5 镜像源代码分发流程
9.6 本章小结
第10章 镜像构建管道
10.1 镜像构建管道的目标
10.2 构建镜像的模式
10.2.1 多合一镜像
10.2.2 分离构建时和运行时镜像
10.2.3 通过多阶段构建来更改运行时镜像
10.3 在构建镜像时记录元数据
10.4 在镜像构建管道中测试镜像
10.5 标记镜像的模式
10.5.1 背景
10.5.2 带有唯一标签的持续交付
10.5.3 带有具体环境工件的持续交付
10.5.4 语义版本控制
10.6 本章小结
第3部分 更高层次的抽象与编排
第11章 Docker 和 Compose 服务
11.1 “Hello World” 服务
11.1.1 自动复活和复制
11.1.2 自动推出
11.1.3 服务运行状况与回滚
11.2 使用 Compose V3 的声明式服务环境
11.2.1 YAML 入门
11.2.2 Compose V3 的服务集合
11.3 带有状态的服务和保留的数据
11.4 使用 Compose 进行负载均衡、服务发现和联网
11.5 本章小结
第12章 一流的配置
12.1 配置的分发和管理
12.2 分离应用程序和配置
12.2.1 使用配置资源
12.2.2 部署应用程序
12.2.3 直接管理配置资源
12.3 一种特殊的配置:机密信息
12.4 本章小结
第13章 使用 Swarm 在 Docker 主机集群上编排服务
13.1 使用 Docker Swarm 集群
13.1.1 Docker Swarm 模式介绍
13.1.2 部署 Swarm 集群
13.2 将应用程序部署到 Swarm 集群
13.2.1 Docker Swarm 集群资源类型介绍
13.2.2 使用 Docker 服务定义应用程序及其依赖项
13.2.3 部署应用程序
13.3 与 Swarm 集群内运行的服务通信
13.3.1 使用 Swarm 路由网格将客户端请求路由到服务
13.3.2 使用覆盖网络
13.3.3 在覆盖网络上发现服务
13.3.4 在覆盖网络上隔离服务之间的通信
13.3.5 负载均衡
13.4 将服务任务放置在集群中
13.4.1 复制服务
13.4.2 约束任务的运行位置
13.4.3 使用全局服务方式在每个节点上部署一个任务
13.4.4 将真实的应用程序部署到真实的集群中
13.5 本章小结