这书根据Docker1.8版本号,循序渐进地将Docker技术性及附近绿色生态展现给广大读者。第1、2章是器皿技术性的简述;第3~7章各自详细介绍镜像系统、库房、互联网、卷管理方法等器皿关键定义;第7、8章详细介绍Docker插口和安全性;第9、10章是Docker的规范保持,协助阅读者建立自身的镜像系统并了解身后的基本原理。第11、12章详细介绍Docker的群集管理方法及生态链,协助阅读者掌握全部生态圈。第13、14章是Docker检测及小区开发设计,协助阅读者了解Docker小区的运行方法。
目录
- 序
- 前 言
- 第1章 Docker简介 1
- 1.1 引言 1
- 1.1.1 Docker的历史和发展 1
- 1.1.2 Docker的架构介绍 2
- 1.2 功能和组件 3
- 1.2.1 Docker客户端 3
- 1.2.2 Docker daemon 3
- 1.2.3 Docker容器 3
- 1.2.4 Docker镜像 4
- 1.2.5 Registry 4
- 1.3 安装和使用 5
- 1.3.1 Docker的安装 5
- 1.3.2 Docker的使用 6
- 1.4 概念澄清 8
- 1.4.1 Docker在LXC基础上做了什么工作 8
- 1.4.2 Docker容器和虚拟机之间有什么不同 9
- 1.5 本章小结 10
- 第2章 关于容器技术 11
- 2.1 容器技术的前世今生 11
- 2.1.1 关于容器技术 11
- 2.1.2 容器技术的历史 12
- 2.2 一分钟理解容器 14
- 2.2.1 容器的组成 14
- 2.2.2 容器的创建原理 15
- 2.3 Cgroup介绍 16
- 2.3.1 Cgroup是什么 16
- 2.3.2 Cgroup的接口和使用 17
- 2.3.3 Cgroup子系统介绍 18
- 2.4 Namespace介绍 20
- 2.4.1 Namespace是什么 20
- 2.4.2 Namespace的接口和使用 21
- 2.4.3 各个Namespace介绍 22
- 2.5 容器造就Docker 26
- 2.6 本章小结 27
- 第3章 理解Docker镜像 28
- 3.1 Docker image概念介绍 28
- 3.2 使用Docker image 29
- 3.2.1 列出本机的镜像 29
- 3.2.2 Build:创建一个镜像 31
- 3.2.3 Ship:传输一个镜像 32
- 3.2.4 Run:以image为模板启动一个容器 32
- 3.3 Docker image的组织结构 33
- 3.3.1 数据的内容 33
- 3.3.2 数据的组织 35
- 3.4 Docker image扩展知识 37
- 3.4.1 联合挂载 37
- 3.4.2 写时复制 37
- 3.4.3 Git式管理 40
- 3.5 本章小结 40
- 第4章 仓库进阶 41
- 4.1 什么是仓库 41
- 4.1.1 仓库的组成 41
- 4.1.2 仓库镜像 42
- 4.2 再看Docker Hub 43
- 4.2.1 Docker Hub的优点 43
- 4.2.2 网页分布 44
- 4.2.3 账户管理系统 46
- 4.3 仓库服务 49
- 4.3.1 Registry功能和架构 49
- 4.3.2 Registry API 50
- 4.3.3 Registry API传输过程分析 53
- 4.3.4 鉴权机制 57
- 4.4 部署私有仓库 61
- 4.4.1 运行私有服务 61
- 4.4.2 构建反向代理 61
- 4.5 Index及仓库高级功能 64
- 4.5.1 Index的作用和组成 64
- 4.5.2 控制单元 65
- 4.5.3 鉴权模块 66
- 4.5.4 数据库 67
- 4.5.5 高级功能 68
- 4.5.6 Index客户端界面 69
- 4.6 本章小结 69
- 第5章 Docker网络 71
- 5.1 Docker网络现状 71
- 5.2 基本网络配置 73
- 5.2.1 Docker网络初探 73
- 5.2.2 Docker网络相关参数 80
- 5.3 高级网络配置 85
- 5.3.1 容器跨主机多子网方案 85
- 5.3.2 容器跨主机多子网配置方法 86
- 5.4 网络解决方案进阶 90
- 5.4.1 Weave 90
- 5.4.2 Flannel 91
- 5.4.3 SocketPlane 94
- 5.5 本章小结 98
- 第6章 容器卷管理 99
- 6.1 Docker卷管理基础 99
- 6.1.1 增加新数据卷 99
- 6.1.2 将主机目录挂载为数据卷 100
- 6.1.3 创建数据卷容器 100
- 6.1.4 数据卷的备份、转储和迁移 101
- 6.1.5 Docker卷管理的问题 101
- 6.2 使用卷插件 102
- 6.2.1 卷插件简介 102
- 6.2.2 卷插件的使用 102
- 6.3 卷插件剖析 103
- 6.3.1 卷插件工作原理 104
- 6.3.2 卷插件API接口 105
- 6.3.3 插件发现机制 105
- 6.4 已有的卷插件 106
- 6.5 本章小结 107
- 第7章 Docker API 108
- 7.1 关于 Docker API 108
- 7.1.1 REST 简介 108
- 7.1.2 Docker API 初探 109
- 7.1.3 Docker API 种类 110
- 7.2 RESTful API应用示例 110
- 7.2.1 前期准备 111
- 7.2.2 Docker API的基本示例 116
- 7.3 API的高级应用 123
- 7.3.1 场景概述 123
- 7.3.2 场景实现 124
- 7.4 本章小结 131
- 第8章 Docker安全 132
- 8.1 深入理解Docker的安全 132
- 8.1.1 Docker的安全性 132
- 8.1.2 Docker容器的安全性 132
- 8.2 安全策略 133
- 8.2.1 Cgroup 133
- 8.2.2 ulimit 135
- 8.2.3 容器组网 135
- 8.2.4 容器 全虚拟化 136
- 8.2.5 镜像签名 136
- 8.2.6 日志审计 136
- 8.2.7 监控 137
- 8.2.8 文件系统级防护 137
- 8.2.9 capability 137
- 8.2.10 SELinux 138
- 8.2.11 AppArmor 142
- 8.2.12 Seccomp 144
- 8.2.13 grsecurity 145
- 8.2.14 几个与Docker安全相关的项目 146
- 8.3 安全加固 146
- 8.3.1 主机逃逸 147
- 8.3.2 安全加固之capability 150
- 8.3.3 安全加固之SELinux 151
- 8.3.4 安全加固之AppArmor 152
- 8.4 Docker安全遗留问题 153
- 8.4.1 User Namespace 153
- 8.4.2 非root运行Docker daemon 153
- 8.4.3 Docker热升级 153
- 8.4.4 磁盘限额 154
- 8.4.5 网络I/O 154
- 8.5 本章小结 154
- 第9章 Libcontainer简介 155
- 9.1 引擎的引擎 155
- 9.1.1 关于容器的引擎 155
- 9.1.2 对引擎的理解 156
- 9.2 Libcontainer的技术原理 157
- 9.2.1 为容器创建新的命名空间 158
- 9.2.2 为容器创建新的Cgroup 159
- 9.2.3 创建一个新的容器 160
- 9.2.4 Libcontainer的功能 164
- 9.3 关于runC 166
- 9.3.1 runC和Libcontainer的关系 166
- 9.3.2 runC的工作原理 167
- 9.3.3 runC的未来 168
- 9.4 本章小结 169
- 第10章 Docker实战 170
- 10.1 Dockerfile简介 170
- 10.1.1 一个简单的例子 171
- 10.1.2 Dockerfile指令 171
- 10.1.3 再谈Docker镜像制作 173
- 10.2 基于Docker的Web应用和发布 174
- 10.2.1 选择基础镜像 174
- 10.2.2 制作HTTPS服务器镜像 175
- 10.2.3 将Web源码导入Tomcat镜像中 178
- 10.2.4 部署与验证 179
- 10.3 为Web站点添加后台服务 180
- 10.3.1 代码组织结构 180
- 10.3.2 组件镜像制作过程 183
- 10.3.3 整体部署服务 183
- 10.4 本章小结 184
- 第11章 Docker集群管理 185
- 11.1 Compose 185
- 11.1.1 Compose概述 185
- 11.1.2 Compose配置简介 186
- 11.2 Machine 187
- 11.2.1 Machine概述 187
- 11.2.2 Machine的基本概念及运行流程 188
- 11.3 Swarm 188
- 11.3.1 Swarm概述 188
- 11.3.2 Swarm内部架构 189
- 11. 4 Docker在OpenStack上的集群实战 190
- 11.5 本章小结 196
- 第12章 Docker生态圈 197
- 12.1 Docker生态圈介绍 197
- 12.2 重点项目介绍 198
- 12.2.1 编排 198
- 12.2.2 容器操作系统 203
- 12.2.3 PaaS平台 206
- 12.3 生态圈的未来发展 208
- 12.3.1 Docker公司的发展和完善方向 208
- 12.3.2 OCI组织 209
- 12.3.3 生态圈格局的分化和发展 210
- 12.4 本章小章 211
- 第13章 Docker测试 212
- 13.1 Docker自身测试 212
- 13.1.1 Docker自身的测试框架 212
- 13.1.2 运行Docker测试 213
- 13.1.3 在容器中手动运行测试用例 215
- 13.1.4 运行集成测试中单个或多个测试用例 215
- 13.1.5 Docker测试用例集介绍 216
- 13.1.6 Docker测试需要改进的方面 217
- 13.1.7 构建和测试文档 217
- 13.1.8 其他Docker测试套 218
- 13.2 Docker技术在测试中的应用 220
- 13.2.1 Docker对测试的革命性影响 221
- 13.2.2 Docker技术适用范围 222
- 13.2.3 Jenkins Docker自动化环境配置 223
- 13.3 本章小结 229
- 第14章 参与Docker开发 230
- 14.1 改进Docker 230
- 14.1.1 报告问题 230
- 14.1.2 提交补丁 231
- 14.2 编译自己的Docker 235
- 14.2.1 使用make工具编译 235
- 14.2.2 手动启动容器编译 235
- 14.2.3 编译动态链接的可执行文件 237
- 14.2.4 跑测试用例及小结 237
- 14.3 开源的沟通和交流 238
- 14.3.1 Docker沟通和交流的途径 238
- 14.3.2 开源沟通和交流的建议 238
- 14.4 Docker项目的组织架构 239
- 14.4.1 管理模型 239
- 14.4.2 组织架构 240
- 14.5 本章小章 242
- 附录A FAQ 243
- 附录B 常用Dockerfile 247
- 附录C Docker信息获取渠道 250