第1章 Docker入门 1
1.0 简介 1
1.1 在Ubuntu 14.04上安装Docker 2
1.2 在CentOS 6.5上安装Docker 3
1.3 在CentOS 7上安装Docker 4
1.4 使用Vagrant创建本地Docker主机 4
1.5 在树莓派上安装Docker 6
1.6 在OS X上通过Docker Toolbox安装Docker 7
1.7 在OS X上通过Boot2Docker安装Docker 9
1.8 在Windows 8.1 台式机上运行Boot2Docker 13
1.9 使用Docker Machine在云中创建Docker主机 14
1.10 使用Docker实验版二进制文件 18
1.11 在Docker中运行Hello World 18
1.12 以后台方式运行Docker容器 20
1.13 创建、启动、停止和移除容器 21
1.14 使用Dockerfile构建Docker镜像 22
1.15 在单一容器中使用Supervisor运行WordPress 24
1.16 使用两个链接在一起的容器运行WordPress博客程序 26
1.17 备份在容器中运行的数据库 28
1.18 在宿主机和容器之间共享数据 30
1.19 在容器之间共享数据 31
1.20 对容器进行数据复制 32
第2章 创建和共享镜像 34
2.0 简介 34
2.1 将对容器的修改提交到镜像 35
2.2 将镜像和容器保存为tar文件进行共享 36
2.3 编写你的第一个Dockerfile 37
2.4 将Flask应用打包到镜像 40
2.5 根据最佳实践优化Dockerfile 42
2.6 通过标签对镜像进行版本管理 43
2.7 使用Docker provider从Vagrant迁移到Docker 45
2.8 使用Packer构建Docker镜像 47
2.9 将镜像发布到Docker Hub 50
2.10 使用ONBUILD镜像 53
2.11 运行私有registry 54
2.12 为持续集成/部署在Docker Hub上配置自动构建 56
2.13 使用Git钩子和私有registry建立本地自动构建环境 60
2.14 使用Conduit进行持续部署 61
第3章 Docker网络 63
3.0 简介 63
3.1 查看容器的IP地址 64
3.2 将容器端口暴露到主机上 65
3.3 在Docker中进行容器链接 67
3.4 理解Docker容器网络 69
3.5 选择容器网络模式 72
3.6 配置Docker守护进程iptables和IP转发设置 74
3.7 通过Pipework理解容器网络 75
3.8 定制Docker网桥设备 80
3.9 在Docker中使用OVS 81
3.10 在Docker主机间创建GRE隧道 83
3.11 在Weave网络上运行容器 85
3.12 在AWS上运行Weave网络 87
3.13 在Docker主机上部署flannel覆盖网络 89
3.14 在多台Docker主机中使用Docker Network 90
3.15 深入Docker Network命名空间配置 94
第4章 开发和配置Docker 96
4.0 简介 96
4.1 管理和配置Docker守护进程 97
4.2 从源代码编译自己的Docker二进制文件 98
4.3 为开发Docker运行Docker测试集 100
4.4 使用新的Docker二进制文件替换当前的文件 101
4.5 使用nsenter 102
4.6 runc简介 104
4.7 远程访问Docker守护进程 106
4.8 通过Docker远程API完成自动化任务 107
4.9 从远程安全访问Docker守护进程 109
4.10 使用docker-py访问远程Docker守护进程 111
4.11 安全使用docker-py 113
4.12 更改存储驱动程序 113
第5章 Kubernetes 116
5.0 简介 116
5.1 理解Kubernetes架构 118
5.2 用于容器间连接的网络pod 120
5.3 使用Vagrant创建一个多节点的Kubernetes集群 121
5.4 在Kubernetes集群上通过pod启动容器 124
5.5 利用标签查询Kubernetes对象 126
5.6 使用replication controller管理pod的副本数 127
5.7 在一个pod中运行多个容器 129
5.8 使用集群IP服务进行动态容器链接 131
5.9 使用Docker Compose创建一个单节点Kubernetes集群 135
5.10 编译Kubernetes构建自己的发布版本 139
5.11 使用hyperkube二进制文件启动Kubernetes组件 141
5.12 浏览Kubernetes API 142
5.13 运行Kubernetes仪表盘 146
5.14 升级老版本API 147
5.15 为Kubernetes集群添加身份验证支持 149
5.16 配置Kubernetes客户端连接到远程集群 150
第6章 为Docker优化的操作系统 152
6.0 简介 152
6.1 在Vagrant中体验CoreOS Linux发行版 153
6.2 使用cloud-init在CoreOS上启动容器 155
6.3 通过Vagrant启动CoreOS集群,在多台主机上运行容器 157
6.4 在CoreOS集群上通过fleet启动容器 160
6.5 在CoreOS实例之间部署flannel覆盖网络 162
6.6 使用Project Atomic运行Docker容器 164
6.7 在AWS上启动Atomic实例运行Docker 165
6.8 快速体验在Ubuntu Core Snappy上运行Docker 167
6.9 在AWS EC2上启动Ubuntu Core Snappy实例 169
6.10 在RancherOS中运行Docker容器 173
第7章 Docker生态环境:工具 175
7.0 简介 175
7.1 使用Docker Compose创建WordPress站点 176
7.2 使用Docker Compose在Docker上对Mesos和Marathon进行测试 179
7.3 在Docker Swarm集群上运行容器 181
7.4 使用Docker Machine创建跨云计算服务提供商的Swarm集群 183
7.5 使用Kitematic UI管理本地容器 185
7.6 使用Docker UI管理容器 187
7.7 使用Wharfee交互式shell 189
7.8 使用Ansible的Docker模块对容器进行编排 190
7.9 在Docker主机集群中使用Rancher管理容器 193
7.10 使用Lattice在集群中运行容器 196
7.11 通过Apache Mesos和Marathon运行容器 198
7.12 在Mesos集群上使用Mesos Docker容器化 202
7.13 使用registrator发现Docker服务 204
第8章 云计算中的Docker 208
8.0 简介 208
8.1 在公有云中运行Docker 209
8.2 在AWS EC2上启动Docker主机 212
8.3 在Google GCE上启动Docker主机 215
8.4 在Microsoft Azure上启动Docker主机 218
8.5 在AWS上使用Docker Machine启动Docker主机 220
8.6 在Azure上使用Docker Machine启动Docker主机 222
8.7 在Docker容器中运行云服务提供商的CLI 224
8.8 使用Google Container registry存储Docker镜像 226
8.9 在GCE Google-Container实例中使用Docker 229
8.10 通过GCE在云中使用Kubernetes 231
8.11 配置使用EC2 Container Service 234
8.12 创建一个ECS集群 237
8.13 在ECS集群中启动Docker容器 240
8.14 利用AWS Beanstalk对Docker的支持在云中运行应用程序 244
第9章 监控容器 248
9.0 简介 248
9.1 使用docker inspect命令获取容器的详细信息 249
9.2 获取运行中容器的使用统计信息 251
9.3 在Docker主机上监听Docker事件 252
9.4 使用docker logs命令获取容器的日志 254
9.5 使用Docker守护进程之外的日志记录驱动程序 254
9.6 使用Logspout采集容器日志 257
9.7 管理Logspout路由来存储容器日志 259
9.8 使用Elasticsearch和Kibana对容器日志进行存储和可视化 261
9.9 使用Collectd对容器指标进行可视化 262
9.10 使用cAdvisor监控容器资源使用状况 267
9.11 通过InfluxDB、Grafana和cAdvisor监控容器指标 269
9.12 使用Weave Scope对容器布局进行可视化 270
第10章 应用用例 272
10.0 简介 272
10.1 CI/CD:构建开发环境 273
10.2 CI/CD:使用Jenkins和Apache Mesos构建持续交付工作流 276
10.3 ELB:使用confd和registrator创建动态负载平衡器 280
10.4 DATA:使用Cassandra和Kubernetes构建兼容S3的对象存储 286
10.5 DATA:使用Docker Network构建MySQL Galera集群 290
10.6 DATA:以动态方式为MySQL Galera集群配置负载平衡器 292
10.7 DATA:构建Spark集群 294
关于作者 298
关于封面 298