Docker 技术入门与实战
Docker 技术入门与实战
编辑推荐
适读人群 :1. 云计算开发人员。2. 网络应用开发与管理人员。 入门 Docker 的首本书,经典畅销书升级,系统化掌握容器技术栈,第 3 版基于 Docker 新 18.x 系列版本。
内容简介
本书从 Docker 基本原理开始,深入浅出地讲解 Docker 的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署 Docker 应用。本书分为四大部分:基础入门、实战案例、进阶技能、开源项目,部分(第 1~8 章)介绍 Docker 与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据卷、端口映射等;第二部分(第 9~16 章)通过案例介绍 Docker 的应用方法,包括与各种操作系统平台、SSH 服务的镜像、Web 服务器与应用、数据库的应用、各类编程语言的接口、容器云等,还介绍了作者在容器实战中的思考与经验总结;第三部分(第 17~21 章)介绍一些进阶技能,如 Docker 核心技术实现原理、安全、高级网络配置、libnetwork 插件化网络功能等;第四部分(第 22~28 章)介绍与容器开发相关的开源项目,包括 Etcd、Docker Machine、Docker Compose、Docker Swarm、Mesos、Kubernetes 等。第 3 版根据 Docker 18.x 系列版本对全书内容进行了全面修订。
作者简介
杨保华,博士,现为甲骨文架构师。研究方向包括分布式系统、大数据和算法设计等,是容器、网络虚拟化、区块链等技术的早期研究者和布道者。他倡导技术创新与产品、市场相结合,曾负责多个大型平台的架构和设计,以及企业系统的实现和实施。他热爱开源文化,曾积极贡献了多个开源项目。
目录
第 3 版前言
第一部分 基础入门
第 1 章 初识 Docker 与容器 3
- 1.1 什么是 Docker 3
- 1.2 为什么要使用 Docker 6
- 1.3 Docker 与虚拟化 8
- 1.4 本章小结 9
第 2 章 核心概念与安装配置 10
- 2.1 核心概念 10
- 2.2 安装 Docker 引擎 11
- 2.2.1 Ubuntu 环境下安装 Docker 12
- 2.2.2 CentOS 环境下安装 Docker 14
- 2.2.3 通过脚本安装 15
- 2.2.4 macOS 环境下安装 Docker 15
- 2.2.5 Windows 环境下安装 Docker 23
- 2.3 配置 Docker 服务 26
- 2.4 推荐实践环境 27
- 2.5 本章小结 27
第 3 章 使用 Docker 镜像 28
- 3.1 获取镜像 28
- 3.2 查看镜像信息 30
- 3.3 搜寻镜像 32
- 3.4 删除和清理镜像 33
- 3.5 创建镜像 35
- 3.6 存出和载入镜像 36
- 3.7 上传镜像 37
- 3.8 本章小结 38
第 4 章 操作 Docker 容器 39
- 4.1 创建容器 39
- 4.2 停止容器 44
- 4.3 进入容器 46
- 4.4 删除容器 47
- 4.5 导入和导出容器 48
- 4.6 查看容器 49
- 4.7 其他容器命令 50
- 4.8 本章小结 52
第 5 章 访问 Docker 仓库 53
- 5.1 Docker Hub 公共镜像市场 53
- 5.2 第三方镜像市场 55
- 5.3 搭建本地私有仓库 56
- 5.4 本章小结 58
第 6 章 Docker 数据管理 59
- 6.1 数据卷 59
- 6.2 数据卷容器 60
- 6.3 利用数据卷容器来迁移数据 62
- 6.4 本章小结 62
第 7 章 端口映射与容器互联 63
- 7.1 端口映射实现容器访问 63
- 7.2 互联机制实现便捷互访 64
- 7.3 本章小结 67
第 8 章 使用 Dockerfile 创建镜像 68
- 8.1 基本结构 68
- 8.2 指令说明 70
- 8.2.1 配置指令 71
- 8.2.2 操作指令 74
- 8.3 创建镜像 75
- 8.3.1 命令选项 76
- 8.3.2 选择父镜像 77
- 8.3.3 使用。dockerignore 文件 77
- 8.3.4 多步骤创建 78
- 8.4 最佳实践 79
- 8.5 本章小结 80
第二部分 实战案例
第 9 章 操作系统 83
- 9.1 BusyBox 83
- 9.2 Alpine 85
- 9.3 Debian/Ubuntu 86
- 9.4 CentOS/Fedora 88
- 9.5 本章小结 89
第 10 章 为镜像添加 SSH 服务 90
- 10.1 基于 commit 命令创建 90
- 10.2 使用 Dockerfile 创建 93
- 10.3 本章小结 95
第 11 章 Web 服务与应用 96
- 11.1 Apache 96
- 11.2 Nginx 100
- 11.3 Tomcat 104
- 11.4 Jetty 108
- 11.5 LAMP 109
- 11.6 持续开发与管理 111
- 11.7 本章小结 114
第 12 章 数据库应用 115
- 12.1 MySQL 115
- 12.2 Oracle Database XE 117
- 12.3 MongoDB 118
- 12.4 Redis 124
- 12.5 Cassandra 126
- 12.6 本章小结 129
第 13 章 分布式处理与大数据平台 130
- 13.1 Hadoop 130
- 13.2 Spark 133
- 13.3 Storm 136
- 13.4 Elasticsearch 140
- 13.5 本章小结 141
第 14 章 编程开发 142
- 14.1 C/C++ 142
- 14.2 Java 146
- 14.3 Python 149
- 14.3.1 使用 Python 官方镜像 150
- 14.3.2 使用 PyPy 151
- 14.3.3 使用 Flask 151
- 14.3.4 相关资源 154
- 14.4 JavaScript 154
- 14.4.1 使用 Node.js 154
- 14.4.2 相关资源 158
- 14.5 Go 158
- 14.6 本章小结 161
第 15 章 容器与云服务 162
- 15.1 公有云容器服务 162
- 15.1.1 AWS 162
- 15.1.2 Google Cloud Platform 163
- 15.1.3 Azure 164
- 15.1.4 腾讯云 165
- 15.1.5 阿里云 165
- 15.1.6 华为云 166
- 15.1.7 UCloud 167
- 15.2 容器云服务 168
- 15.3 阿里云容器服务 172
- 15.4 时速云介绍 174
- 15.5 本章小结 175
第 16 章 容器实战思考 176
- 16.1 Docker 为什么会成功 176
- 16.2 研发人员该如何看待容器 177
- 16.3 容器化开发模式 178
- 16.4 容器与生产环境 180
- 16.5 本章小结 182
第三部分 进阶技能
第 17 章 核心实现技术 185
- 17.1 基本架构 185
- 17.2 命名空间 187
- 17.3 控制组 191
- 17.4 联合文件系统 193
- 17.5 Linux 网络虚拟化 195
- 17.6 本章小结 197
第 18 章 配置私有仓库 199
- 18.1 安装 Docker Registry 199
- 18.2 配置 TLS 证书 201
- 18.3 管理访问权限 202
- 18.4 配置 Registry 205
- 18.5 批量管理镜像 211
- 18.6 使用通知系统 214
- 18.7 本章小结 217
第 19 章 安全防护与配置 218
- 19.1 命名空间隔离的安全 218
- 19.2 控制组资源控制的安全 219
- 19.3 内核能力机制 219
- 19.4 Docker 服务端的防护 221
- 19.5 更多安全特性的使用 221
- 19.6 使用第三方检测工具 222
- 19.6.1 Docker Bench 222
- 19.6.2 clair 223
- 19.7 本章小结 224
第 20 章 高级网络功能 225
- 20.1 启动与配置参数 225
- 20.2 配置容器 DNS 和主机名 227
- 20.3 容器访问控制 228
- 20.4 映射容器端口到宿主主机的实现 229
- 20.5 配置容器网桥 231
- 20.6 自定义网桥 232
- 20.7 使用 OpenvSwitch 网桥 233
- 20.8 创建一个点到点连接 235
- 20.9 本章小结 236
第 21 章 libnetwork 插件化网络功能 237
- 21.1 容器网络模型 237
- 21.2 Docker 网络命令 238
- 21.3 构建跨主机容器网络 241
- 21.4 本章小结 243
第四部分 开源项目
第 22 章 Etcd—高可用的键值数据库 247
- 22.1 Etcd 简介 247
- 22.2 安装和使用 Etcd 248
- 22.3 使用客户端命令 253
- 22.3.1 数据类操作 255
- 22.3.2 非数据类操作 258
- 22.4 Etcd 集群管理 260
- 22.4.1 构建集群 260
- 22.4.2 集群参数配置 263
- 22.5 本章小结 264
第 23 章 Docker 三剑客之 Machine 265
- 23.1 Machine 简介 265
- 23.2 安装 Machine 265
- 23.3 使用 Machine 266
- 23.4 Machine 命令 268
- 23.5 本章小结 272
第 24 章 Docker 三剑客之 Compose 273
- 24.1 Compose 简介 273
- 24.2 安装与卸载 274
- 24.3 Compose 模板文件 277
- 24.4 Compose 命令说明 292
- 24.5 Compose 环境变量 299
- 24.6 Compose 应用案例一:Web 负载均衡 300
- 24.7 Compose 应用案例二:大数据 Spark 集群 304
- 24.8 本章小结 309
第 25 章 Docker 三剑客之 Swarm 310
- 25.1 Swarm 简介 310
- 25.2 基本概念 311
- 25.3 使用 Swarm 313
- 25.4 使用服务命令 316
- 25.5 本章小结 319
第 26 章 Mesos—优秀的集群资源调度平台 321
- 26.1 简介 321
- 26.2 Mesos 安装与使用 322
- 26.3 原理与架构 330
- 26.3.1 架构 330
- 26.3.2 基本单元 331
- 26.3.3 调度 331
- 26.3.4 高可用性 332
- 26.4 Mesos 配置解析 333
- 26.4.1 通用项 333
- 26.4.2 master 专属配置项 333
- 26.4.3 slave 专属配置项 335
- 26.5 日志与监控 338
- 26.6 常见应用框架 340
- 26.7 本章小结 341
第 27 章 Kubernetes—生产级容器集群平台 343
- 27.1 简介 343
- 27.2 核心概念 345
- 27.3 资源抽象对象 348
- 27.3.1 容器组 348
- 27.3.2 服务 349
- 27.3.3 存储卷 350
- 27.4 控制器抽象对象 351
- 27.5 其他抽象对象 353
- 27.6 快速体验 355
- 27.7 重要组件 359
- 27.7.1 Etcd 360
- 27.7.2 kube-apiserver 360
- 27.7.3 kube-scheduler 361
- 27.7.4 kube-controller-manager 362
- 27.7.5 kubelet 363
- 27.7.6 kube-proxy 364
- 27.8 使用 kubectl 365
- 27.8.1 获取 kubectl 365
- 27.8.2 命令格式 366
- 27.8.3 全局参数 367
- 27.8.4 通用子命令 369
- 27.9 网络设计 372
- 27.10 本章小结 374
第 28 章 其他相关项目 375
- 28.1 持续集成 375
- 28.2 容器管理 377
- 28.2.1 Portainer 377
- 28.2.2 Panamax 378
- 28.2.3 Seagull 378
- 28.3 编程开发 380
- 28.4 网络支持 381
- 28.4.1 Pipework 381
- 28.4.2 Flannel 项目 382
- 28.4.3 Weave Net 项目 382
- 28.4.4 Calico 项目 383
- 28.5 日志处理 383
- 28.6 服务代理 385
- 28.7 标准与规范 389
- 28.8 其他项目 392
- 28.9 本章小结 396
- 附录
- 附录 A 常见问题总结 398
- 附录 B Docker 命令查询 404
- 附录 C 参考资源链接 411