第一部分 基础入门 3
第1章 初识容器与Docker 3
1.1什么是Docker 3
1.2为什么要使用Docker 5
1.3 Docker与虚拟化 7
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通过脚本安装 14
2.2.4 Mac OS环境下安装Docker 15
2.2.5 Windows环境下安装Docker 20
2.3配置Docker服务 21
2.4推荐实践环境 22
2.5本章小结 22
第3章 使用Docker镜像 23
3.1获取镜像 23
3.2查看镜像信息 25
3.3搜寻镜像 28
3.4删除镜像 29
3.5创建镜像 31
3.6存出和载入镜像 32
3.7上传镜像 33
3.8 本章小结 33
第4章 操作Docker容器 34
4.1创建容器 34
4.2终止容器 39
4.3进入容器 40
4.4删除容器 42
4.5导入和导出容器 42
4.6本章小结 44
第5章 访问Docker仓库 45
5.1 Docker Hub公共镜像市场 45
5.2时速云镜像市场 47
5.3搭建本地私有仓库 48
5.4本章小结 50
第6章Docker数据管理 51
6.1数据卷 51
6.2数据卷容器 52
6.3利用数据卷容器来迁移数据 53
6.4本章小结 54
第7章 端口映射与容器互联 55
7.1端口映射实现访问容器 55
7.2互联机制实现便捷互访 57
7.3本章小结 59
第8章 使用Dockerfile创建镜像 60
8.1基本结构 60
8.2指令说明 62
8.3创建镜像 67
8.4使用.dockerignore文件 67
8.5最佳实践 67
8.6本章小结 68
第二部分 实战案例 71
第9章 操作系统 71
9.1 BusyBox 71
9.2 Alpine 72
9.3 Debian/Ubuntu 74
9.4 CentOS/Fedora 76
9.5本章小结 77
第10章 为镜像添加SSH服务 78
10.1基于commit命令创建 78
10.2使用Dockerfile创建 80
10.3本章小结 82
第11章Web服务与应用 83
11.1 Apache 83
11.2 Nginx 87
11.3 Tomcat 88
11.4 Jetty 92
11.5 LAMP 93
11.6 CMS 94
11.6.1 WordPress 94
11.6.2 Ghost 96
11.7持续开发与管理 96
11.7.1 Jenkins 97
11.7.2 Gitlab 98
11.8本章小结 99
第12章 数据库应用 100
12.1 MySQL 100
12.2 MongoDB 102
12.2.1使用官方镜像 102
12.2.2使用自定义Dockerfile 104
12.3 Redis 106
12.4 Memcached 108
12.5 CouchDB 108
12.6 Cassandra 109
12.7本章小结 110
第13章 分布式处理与大数据平台 111
13.1 RabbitMQ 111
13.2 Celery 113
13.3 Hadoop 114
13.4 Spark 115
13.4.1使用官方镜像 116
13.4.2验证 116
13.5 Storm 117
13.6 Elasticsearch 119
13.7本章小结 120
第14章 编程开发 121
14.1 C/C+++ 121
14.1.1 GCC 121
14.1.2 LLVM 122
14.1.3 Clang 122
14.2 Java 123
14.3 Python 124
14.3.1使用官方的Python镜像 124
14.3.2使用PyPy 124
14.4 JavaScript 125
14.5 Go 127
14.5.1搭建并运行Go容器 127
14.5.2 Beego 130
14.5.3 Gogs:基于Go的Git服务 130
14.6 PHP 130
14.7 Ruby 132
14.7.1使用Ruby官方镜像 132
14.7.2 JRuby 133
14.7.3 Ruby on Rails 134
14.8 Perl 135
14.9 R 136
14.10 Erlang 138
14.11本章小结 140
第15章 容器与云服务 141
15.1公有云容器服务 141
15.1.1 AWS 141
15.1.2 Google Cloud Platform 142
15.1.3 Azure 143
15.1.4腾讯云 144
15.1.5阿里云 144
15.1.6华为云 144
15.1.7 UCloud 145
15.2容器云服务 145
15.2.1基本要素与关键特性 146
15.2.2网易蜂巢 146
15.2.3时速云 147
15.2.4 Daocloud 148
15.2.5灵雀云 148
15.2.6数人云 149
15.3阿里云容器服务 150
15.4时速云容器平台 151
15.5本章小结 153
第16章 容器实战思考 154
16.1 Docker为什么会成功 154
16.2研发人员该如何看容器 155
16.3容器化开发模式 156
16.4容器与生产环境 158
16.5本章小结 160
第三部分 进阶技能 163
第17章Docker核心实现技术 163
17.1基本架构 163
17.2命名空间 165
17.3控制组 167
17.4联合文件系统 169
17.5 Linux网络虚拟化 171
17.6本章小结 174
第18章 配置私有仓库 175
18.1安装Docker Registry 175
18.2配置TLS证书 177
18.3管理访问权限 178
18.4配置Registry 181
18.4.1示例配置 181
18.4.2选项 183
18.5批量管理镜像 188
18.6使用通知系统 190
18.6.1相关配置 190
18.6.2 Notification的使用场景 192
18.7本章小结 193
第19章 安全防护与配置 194
19.1命名空间隔离的安全 194
19.2控制组资源控制的安全 195
19.3内核能力机制 195
19.4 Docker服务端的防护 197
19.5更多安全特性的使用 197
19.6使用第三方检测工具 198
19.6.1 Docker Bench 198
19.6.2 clair 199
19.7本章小结 199
第20章 高级网络功能 201
20.1网络启动与配置参数 201
20.2配置容器DNS和主机名 203
20.3容器访问控制 204
20.4映射容器端口到宿主主机的实现 206
20.5配置docker0网桥 207
20.6自定义网桥 208
20.7使用OpenvSwitch网桥 209
20.8创建一个点到点连接 211
20.9本章小结 212
第21章libnetwork插件化网络功能 213
21.1容器网络模型 213
21.2 Docker网络相关命令 215
21.3构建跨主机容器网络 216
21.4本章小结 219
第四部分 开源项目 223
第22章Etcd——高可用的键值数据库 223
22.1简介 223
22.2安装和使用Etcd 224
22.3使用etcdctl客户端 228
22.3.1数据类操作 230
22.3.2非数据类操作 233
22.4 Etcd集群管理 236
22.4.1构建集群 236
22.4.2集群参数配置 238
22.5本章小结 240
第23章Docker三剑客之Docker Machine 241
23.1简介 241
23.2安装Machine 241
23.3使用Machine 243
23.4 Machine命令 244
23.5本章小结 247
第24章Docker三剑客之Docker Compose 248
24.1简介 248
24.2安装与卸载 249
24.3 Compose命令说明 252
24.4 Compose环境变量 257
24.5 Compose模板文件 257
24.6 Compose应用案例一:Web负载均衡 266
24.7 Compose应用案例二:大数据Spark集群 271
24.8本章小结 273
第25章Docker三剑客之Docker Swarm 274
25.1简介 274
25.2安装Swarm 275
25.3使用Swarm 277
25.4使用其他服务发现后端 281
25.5 Swarm中的调度器 282
25.6 Swarm中的过滤器 284
25.7本章小结 286
第26章Mesos——优秀的集群资源调度平台 287
26.1简介 287
26.2 Mesos安装与使用 288
26.3原理与架构 296
26.3.1架构 296
26.3.2基本单元 297
26.3.3调度 297
26.3.4高可用性 298
26.4 Mesos配置项解析 299
26.4.1通用项 299
26.4.2 master专属项 299
26.4.3 slave专属项 301
26.5日志与监控 304
26.6常见应用框架 306
26.7本章小结 307
第27章Kubernetes——生产级容器集群平台 308
27.1简介 308
27.2核心概念 309
27.2.1集群组件 311
27.2.2资源抽象 312
27.2.3辅助概念 315
27.3快速体验 318
27.4安装部署 322
27.5重要组件 331
27.5.1 Etcd 332
27.5.2 kube-apiserver 332
27.5.3 kube-scheduler 333
27.5.4 kube-controller- manager 333
27.5.5 kubelet 334
27.5.6 kube-proxy 335
27.6使用kubectl 337
27.6.1获取kubectl 337
27.6.2命令格式 337
27.6.3全局参数 338
27.6.4子命令 339
27.7网络设计 351
27.8本章小结 353
第28章 其他相关项目 354
28.1平台即服务方案 354
28.1.1 Deis 354
28.1.2 Flynn 355
28.2持续集成平台Drone 355
28.3容器管理 357
28.3.1 Citadel 357
28.3.2 Shipyard 358
28.3.3 DockerUI 358
28.3.4 Panamax 358
28.3.5 Seagull 359
28.3.6 Dockerboard 361
28.4编程开发 362
28.5网络支持 363
28.5.1 pipework 363
28.5.2 Flannel 364
28.5.3 Weave Net 364
28.5.4 Calico 365
28.6日志处理 366
28.6.1 Docker-Fluentd 366
28.6.2 Logspout 367
28.6.3 Sematext-agent-docker 368
28.7服务代理工具 368
28.7.1 Traefik 369
28.7.2 Muguet 370
28.7.3 nginx-proxy 370
28.8标准与规范 372
28.9其他项目 375
28.9.1 CoreOS 375
28.9.2 OpenStack支持 375
28.9.3 dockerize 376
28.9.4 Unikernel 378
28.9.5容器化的虚拟机 378
28.10本章小结 379
附录 382
附录A常见问题总结 382
附录B Docker命令查询 388
附录C参考资源链接 393