本书赞誉 .................................................................................................................................................xi
前言 ........................................................................................................................................................xiii
第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
本书结构明晰,示例丰富详实,是全面实用的Docker入门教程。作者全面介绍了Docker相关各种工具和平台,涵盖网络、镜像管理、配置以及包括Kubernetes和Mesos在内的编排和调度生态系统,对私有云和公有云上部署的应用程序都给出了丰富实用的解决方案和示例。