第1章 简介 1
1.1 Docker简介 2
1.1.1 提供一个简单、轻量的建模方式 2
1.1.2 职责的逻辑分离 3
1.1.3 快速、高效的开发生命周期 3
1.1.4 鼓励使用面向服务的架构 3
1.2 Docker组件 3
1.2.1 Docker客户端和服务器 4
1.2.2 Docker镜像 5
1.2.3 Registry 5
1.2.4 容器 5
1.3 能用Docker做什么 6
1.4 Docker与配置管理 7
1.5 Docker的技术组件 8
1.6 本书的内容 9
1.7 Docker资源 10
第2章 安装Docker 11
2.1 安装Docker的先决条件 12
2.2 在Ubuntu和Debian中安装Docker 13
2.2.1 检查前提条件 14
2.2.2 安装Docker 16
2.2.3 Docker与UFW 17
2.3 在Red Hat和Red Hat系发行版中安装Docker 17
2.3.1 检查前提条件 18
2.3.2 安装Docker 19
2.3.3 在Red Hat系发行版中启动Docker守护进程 21
2.4 在OS X中安装DockerToolbox 22
2.4.1 在OS X中安装DockerToolbox 22
2.4.2 在OS X中启动DockerToolbox 23
2.4.3 测试DockerToolbox 24
2.5 在Windows中安装 Docker Toolbox 24
2.5.1 在Windows中安装DockerToolbox 25
2.5.2 在Windows中启动DockerToolbox 25
2.5.3 测试DockerToolbox 26
2.6 使用本书的Docker Toolbox示例 26
2.7 Docker安装脚本 27
2.8 二进制安装 28
2.9 Docker守护进程 28
2.9.1 配置Docker守护进程 29
2.9.2 检查Docker守护进程是否正在运行 30
2.10 升级Docker 31
2.11 Docker用户界面 32
2.12 小结 32
第3章 Docker入门 33
3.1 确保Docker已经就绪 33
3.2 运行我们的第一个容器 34
3.3 使用第一个容器 36
3.4 容器命名 38
3.5 重新启动已经停止的容器 39
3.6 附着到容器上 40
3.7 创建守护式容器 40
3.8 容器内部都在干些什么 41
3.9 Docker日志驱动 42
3.10 查看容器内的进程 43
3.11 Docker统计信息 44
3.12 在容器内部运行进程 44
3.13 停止守护式容器 45
3.14 自动重启容器 46
3.15 深入容器 47
3.16 删除容器 48
3.17 小结 49
第4章 使用DoCker镜像和仓库 50
4.1 什么是Docker镜像 50
4.2 列出镜像 52
4.3 拉取镜像 55
4.4 查找镜像 57
4.5 构建镜像 58
4.5.1 创建Docker Hub账号 59
4.5.2 用Docker的commit命令创建镜像 60
4.5.3 用Dockerfile构建镜像 62
4.5.4 基于Dockerfile构建新镜像 65
4.5.5 指令失败时会怎样 67
4.5.6 Dockerfile和构建缓存 68
4.5.7 基于构建缓存的Dockerfile模板 69
4.5.8 查看新镜像 70
4.5.9 从新镜像启动容器 70
4.5.10 Dockerfile指令 74
4.6 将镜像推送到Docker Hub 88
4.7 删除镜像 92
4.8 运行自己的Docker Registry 94
4.8.1 从容器运行Registry 94
4.8.2 测试新Registry 95
4.9 其他可选Registry服务 96
4.10 小结 96
第5章 在测试中使用Docker 97
5.1 使用Docker测试静态网站 97
5.1.1 Sample网站的初始Dockerfile 98
5.1.2 构建Sample网站和Nginx镜像 100
5.1.3 从Sample网站和Nginx镜像构建容器 102
5.1.4 修改网站 104
5.2 使用Docker构建并测试Web应用程序 105
5.2.1 构建Sinatra应用程序 105
5.2.2 创建Sinatra容器 107
5.2.3 扩展Sinatra应用程序来使用Redis 110
5.2.4 将Sinatra应用程序连接到Redis容器 113
5.2.5 Docker内部连网 114
5.2.6 Docker Networking 119
5.2.7 使用容器连接来通信 131
5.2.8 连接容器小结 132
5.3 Docker用于持续集成 132
5.3.1 构建Jenkins和Docker服务器 133
5.3.2 创建新的Jenkins作业 137
5.3.3 运行Jenkins作业 141
5.3.4 与Jenkins作业有关的下一步 143
5.3.5 Jenkins设置小结 143
5.4 多配置的Jenkins 143
5.4.1 创建多配置作业 143
5.4.2 测试多配置作业 147
5.4.3 Jenkins多配置作业小结 149
5.5 其他选择 149
5.5.1 Drone 149
5.5.2 Shippable 149
5.6 小结 149
第6章 使用Docker构建服务 151
6.1 构建第一个应用 151
6.1.1 Jekyll基础镜像 152
6.1.2 构建Jekyll基础镜像 153
6.1.3 Apache镜像 153
6.1.4 构建JekyllApache镜像 154
6.1.5 启动Jekyll网站 155
6.1.6 更新Jekyll网站 158
6.1.7 备份Jekyll卷 159
6.1.8 扩展Jekyll示例网站 161
6.2 使用Docker构建一个Java应用服务 161
6.2.1 WAR文件的获取程序 161
6.2.2 获取WAR文件 162
6.2.3 Tomecat7应用服务器 163
6.2.4 运行WAR文件 165
6.2.5 基于Tomcat应用服务器的构建服务 166
6.3 多容器的应用栈 169
6.3.1 Node.js镜像 169
6.3.2 Redis基础镜像 172
6.3.3 Redis主镜像 173
6.3.4 Redis副本镜像 174
6.3.5 创建Redis后端集群 174
6.3.6 创建Node容器 178
6.3.7 捕获应用日志 180
6.3.8 Node程序栈的小结 183
6.4 不使用SSH管理Docker容器 183
6.5 小结 185
第7章 Docker编配和服务发现 186
7.1 DockerCompose 187
7.1.1 安装DockerCompose 187
7.1.2 获取示例应用 188
7.1.3 docker-compose.yml文件 191
7.1.4 运行Compose 193
7.1.5 使用Compose 195
7.1.6 Compose小结 197
7.2 Consul、服务发现和Docker 197
7.2.1 构建Consul镜像 199
7.2.2 在本地测试Consul容器 202
7.2.3 使用Docker运行Consul集群 203
7.2.4 启动具有自启动功能的Consul节点 206
7.2.5 启动其余节点 207
7.2.6 配合Consul,在Docker里运行一个分布式服务 212
7.3 Docker Swarm 221
7.3.1 安装Swarm 222
7.3.2 创建Swarm集群 222
7.3.3 创建容器 225
7.3.4 过滤器 227
7.3.5 策略 229
7.3.6 小结 230
7.4 其他编配工具和组件 230
7.4.1 Fleet和etcd 230
7.4.2 Kubernetes 231
7.4.3 Apache Mesos 231
7.4.4 Helios 231
7.4.5 Centurion 231
7.5 小结 231
第8章 使用Docker API 233
8.1 DockerAPI 233
8.2 初识RemoteAPI 234
8.3 测试Docker Remote API 236
8.3.1 通过API来管理Docker镜像 237
8.3.2 通过API管理Docker容器 239
8.4 改进TProv应用 242
8.5 对Docker Remote API进行认证 246
8.5.1 建立证书授权中心 246
8.5.2 创建服务器的证书签名请求和密钥 248
8.5.3 配置Docker守护进程 250
8.5.4 创建客户端证书和密钥 251
8.5.5 配置Docker客户端开启认证功能 253
8.6 小结 254
第9章 获得帮助和对Docker进行改进 255
9.1 获得帮助 255
9.1.1 Docker用户、开发邮件列表及论坛 255
9.1.2 IRC上的Docker 256
9.1.3 GitHub上的Docker 256
9.2 报告Docker的问题 257
9.3 搭建构建环境 257
9.3.1 安装Docker 257
9.3.2 安装源代码和构建工具 257
9.3.3 检出源代码 258
9.3.4 贡献文档 258
9.3.5 构建开发环境 259
9.3.6 运行测试 261
9.3.7 在开发环境中使用Docker 261
9.3.8 发起pull request 262
9.3.9 批准合并和维护者 263
9.4 小结 264