自打2013年3月Docker0.1版本号公布至今,因其为意味着的器皿技术也踏入了迅速发展趋势之途,Docker器皿在挺大水平上更改了手机软件的架构模式、开发和运维管理布署方法,也给前些年就明确提出微服务的架构模式插到了迅速起降的羽翼。《Docker实战》由Docker小区第一人JeffNickoloff撰写,共分成3一部分,第1一部分(第1~6章)重中之重详细介绍了Docker器皿的資源防护和权限管理及基本基本原理,第2一部分(第7~10章)详尽表述了怎样装包搭建镜像系统及其各种各样镜像系统派发基础设施建设的基本建设,第3一部分(第11~12章)聚焦点于Docker器皿的组成实际操作,也就是说多器皿和多服务器自然环境的管理方法。《Docker实战演练》图片配文字,融合基本概念和实际实例给大伙儿出示了好几个非常好的实战演练机遇。
做为现阶段受欢迎的容器技术类书籍,《Docker实战》适用互联网技术,云计算技术,公司级手机软件开发、构架、检测,及其运维管理工作人员迅速入门的Docker器皿;一样适用构建以Docker为关键的基础设施建设,并在环境中迅速布署运用及其管理方法器皿群集。
目录
- 第1 部分 保持一台整洁的机器
- 第1 章 欢迎来到Docker 世界 2
- 1.1 什么是Docker 3
- 1.1.1 容器 3
- 1.1.2 容器不是虚拟化 4
- 1.1.3 在隔离的容器中运行软件 4
- 1.1.4 分发容器 6
- 1.2 Docker 解决了什么问题 6
- 1.2.1 组织有序 7
- 1.2.2 提高可移植性 8
- 1.2.3 保护你的机器 9
- 1.3 为什么Docker 如此重要 10
- 1.4 何时何处使用Docker 11
- 1.5 案例:“Hello World” 11
- 1.6 小结 13
- 第2 章 在容器中运行软件 14
- 2.1 从Docker 命令行工具获得帮助 14
- 2.2 控制容器:建立一个网站的监控器 15
- 2.2.1 创建和启动一个新的容器 16
- 2.2.2 运行交互式容器 17
- 2.2.3 列举、停止、重新启动和查看容器输出 18
- 2.3 已解决的问题和PID 命名空间 20
- 2.4 消除元数据冲突:构建一个网站农场 23
- 2.4.1 灵活的容器标识 24
- 2.4.2 容器的状态和依赖 26
- 2.5 构建与环境无关的系统 28
- 2.5.1 只读文件系统 29
- 2.5.2 环境变量的注入 31
- 2.6 建立持久化的容器 34
- 2.6.1 自动重启容器 35
- 2.6.2 使用init 和supervisor 进程维持容器的运行状态 36
- 2.7 清理 38
- 2.8 小结 39
- 第3 章 软件安装的简化 40
- 3.1 选择所需的软件 41
- 3.1.1 什么是仓库 41
- 3.1.2 使用标签 42
- 3.2 查找和安装软件 43
- 3.2.1 命令行使用Docker Hub 43
- 3.2.2 通过网站访问Docker Hub 45
- 3.2.3 使用替代注册服务器 47
- 3.2.4 镜像文件 47
- 3.2.5 从Dockerfile 安装 49
- 3.3 安装文件和隔离 49
- 3.3.1 镜像层实战 50
- 3.3.2 分层关系 51
- 3.3.3 容器文件系统抽象和隔离 52
- 3.3.4 分层文件系统及其工具的优点 53
- 3.3.5 Union 文件系统的不足 53
- 3.4 小结 54
- 第4 章 持久化存储和卷间状态共享 55
- 4.1 存储卷的简介 56
- 4.1.1 存储卷提供容器无关的数据管理方式 56
- 4.1.2 NoSQL 数据库使用存储卷 57
- 4.2 存储卷的类型 60
- 4.2.1 绑定挂载卷 60
- 4.2.2 Docker 管理卷 63
- 4.3 共享存储卷 65
- 4.3.1 主机依赖的共享 65
- 4.3.2 共享和volumes-from 标志 66
- 4.4 管理卷的生命周期 68
- 4.4.1 管理卷的权限 68
- 4.4.2 存储卷的清理 69
- 4.5 存储卷的高级容器模式 70
- 4.5.1 卷容器模式 70
- 4.5.2 数据打包的存储卷容器 72
- 4.5.3 多态容器模式 73
- 4.6 小结 74
- 第5 章 网络访问 75
- 5.1 网络相关的背景知识 76
- 5.1.1 基础:协议,接口和端口 76
- 5.1.2 高级:网络,NAT 和端口转发 77
- 5.2 Docker 的网络 79
- 5.2.1 本地Docker 网络的拓扑结构 79
- 5.2.2 四种网络容器原型 80
- 5.3 Closed 容器 81
- 5.4 Bridged 容器 83
- 5.4.1 访问外部网络 84
- 5.4.2 自定义命名解析 85
- 5.4.3 开放对容器的访问 88
- 5.4.4 跨容器通信 91
- 5.4.5 修改网桥接口的配置 92
- 5.5 Joined 容器 93
- 5.6 Open 容器 95
- 5.7 跨容器依赖 96
- 5.7.1 链接——本地服务发现 97
- 5.7.2 链接别名 98
- 5.7.3 环境变量的改动 99
- 5.7.4 链接的本质和缺点 101
- 5.8 小结 102
- 第6 章 隔离——限制危险 103
- 6.1 资源分配 104
- 6.1.1 内存限制 104
- 6.1.2 CPU 105
- 6.1.3 设备的访问权 108
- 6.2 共享内存 108
- 6.2.1 跨容器的进程间通信 109
- 6.2.2 开放内存容器 110
- 6.3 理解用户 111
- 6.3.1 Linux 用户命令空间 111
- 6.3.2 run-as 用户 111
- 6.3.3 用户和卷 114
- 6.4 能力——操作系统功能的授权 116
- 6.5 运行特权容器 117
- 6.6 使用加强工具创建更健壮的容器 118
- 6.6.1 指定额外的安全选项 119
- 6.6.2 微调LXC 120
- 6.7 因地制宜地构建容器 121
- 6.7.1 应用 121
- 6.7.2 高层的系统服务 122
- 6.7.3 低层的系统服务 122
- 6.8 小结 122
- 第2 部分 镜像发布:如何打包软件
- 第7 章 在镜像中打包软件 126
- 7.1 从容器构建镜像 126
- 7.1.1 打包Hello World 127
- 7.1.2 打包Git 128
- 7.1.3 审查文件系统的改动 128
- 7.1.4 Commit——创建新镜像 129
- 7.1.5 可配置的镜像属性 130
- 7.2 深入Docker 镜像和层 131
- 7.2.1 深入联合文件系统 132
- 7.2.2 重新认识镜像、层、仓库和标签 134
- 7.2.3 镜像体积和层数限制 137
- 7.3 导出和导入扁平文件系统 139
- 7.4 版本控制的最佳实践 141
- 7.5 小结 143
- 第8 章 构建自动化和高级镜像设置 144
- 8.1 使用Dockerfile 打包Git 144
- 8.2 Dockerfile 入门 148
- 8.2.1 元数据指令 148
- 8.2.2 文件系统指令 152
- 8.3 注入下游镜像在构建时发生的操作 155
- 8.4 使用启动脚本和多进程容器 158
- 8.4.1 验证环境相关的先决条件 158
- 8.4.2 初始化进程 160
- 8.5 加固应用镜像 161
- 8.5.1 内容可寻址镜像标识符 161
- 8.5.2 用户权限 162
- 8.5.3 SUID 和SGID 权限 164
- 8.6 小结 166
- 第9 章 公有和私有软件分发 168
- 9.1 选择一个分发方法 169
- 9.1.1 分发选项图谱 169
- 9.1.2 选择标准 169
- 9.2 通过托管Registry 发布 172
- 9.2.1 通过公有仓库发布:你好!Docker Hub 172
- 9.2.2 使用自动构建发布公有项目 174
- 9.2.3 私有托管仓库 176
- 9.3 私有Registry 介绍 178
- 9.3.1 使用Registry 镜像 180
- 9.3.2 从Registry 使用镜像 181
- 9.4 镜像的手动发布和分发 181
- 9.5 镜像源代码分发工作流程 186
- 9.6 小结 189
- 第10 章 运行自定义Registry 190
- 10.1 运行个人Registry 191
- 10.1.1 再度介绍镜像 192
- 10.1.2 介绍V2 API 193
- 10.1.3 定制镜像 195
- 10.2 集中式Registry 的增强 196
- 10.2.1 创建一个反向代理 197
- 10.2.2 在反向代理上配置HTTPS(TLS) 199
- 10.2.3 添加身份认证层 202
- 10.2.4 客户端兼容性 206
- 10.2.5 应用于生产环境之前 208
- 10.3 持久化的BLOB 存储 210
- 10.3.1 微软Azure 托管远程存储 211
- 10.3.2 AWS S3 托管远程存储 212
- 10.3.3 RADOS(Ceph)的内部远程存储 214
- 10.4 扩展访问和延迟的改进 215
- 10.4.1 与元数据缓存集成 215
- 10.4.2 使用存储中间件简化BLOB 传输 217
- 10.5 通过通知集成 219
- 10.6 小结 224
- 第3 部分 多容器和多主机环境
- 第11 章 Docker Compose 声明式环境 228
- 11.1 Docker Compose:第一天的启动并运行 228
- 11.1.1 用一个简单的开发环境入门 229
- 11.1.2 一个复杂的架构:分布式系统和Elasticsearch 的集成 231
- 11.2 环境内的迭代 233
- 11.2.1 构建、启动和重新构建服务 234
- 11.2.2 服务伸缩和删除 237
- 11.2.3 迭代和持久化状态 238
- 11.2.4 网络和连接问题 239
- 11.3 开始一个新项目:三个示例中的Compose YAML 240
- 11.3.1 启动前的构建、环境、元数据和网络 240
- 11.3.2 已知的组件和绑定挂载卷 241
- 11.3.3 卷容器和扩展服务 242
- 11.4 小结 243
- 第12 章 Docker Machine 和Swarm 集群 245
- 12.1 介绍Docker Machine 246
- 12.1.1 构建和管理Docker Machine 246
- 12.1.2 配置Docker 客户端与远程Daemon 工作 249
- 12.2 Docker Swarm 介绍 252
- 12.2.1 借助于Docker Machine 构建Swarm 集群 252
- 12.2.2 Swarm 扩展了Docker 远程API 255
- 12.3 Swarm 调度 258
- 12.3.1 Spread 算法 258
- 12.3.2 用过滤器调整调度 260
- 12.3.3 BinPack 和随机调度算法 263
- 12.4 Swarm 服务发现 265
- 12.4.1 Swarm 和单主机网络 266
- 12.4.2 服务发现生态系统和权宜之计 268
- 12.4.3 展望多主机网络 269
- 12.5 小结 270
- 后记 271