新書推薦:
《
异域回声——晚近海外汉学之文史互动研究
》
售價:NT$
500.0
《
世界文明中的作物迁徙:聚焦亚洲、中东和南美洲被忽视的本土农业文明
》
售價:NT$
454.0
《
无端欢喜
》
售價:NT$
347.0
《
股票大作手操盘术
》
售價:NT$
245.0
《
何以中国·何谓唐代:东欧亚帝国的兴亡与转型
》
售價:NT$
398.0
《
一间只属于自己的房间 女性主义先锋伍尔夫代表作 女性精神独立与经济独立的象征,做自己,比任何事都更重要
》
售價:NT$
203.0
《
泉舆日志 幻想世界宝石生物图鉴
》
售價:NT$
611.0
《
养育女孩 : 官方升级版
》
售價:NT$
230.0
|
內容簡介: |
本书基于Docker1.8版本,由浅入深地将Docker技术及周边生态呈现给广大读者。第1、2章是容器技术的概述;第3~7章分别介绍镜像、仓库、网络、卷管理等容器核心概念;第7、8章介绍Docker接口和安全;第9、10章是Docker的标准实现,帮助读者创建自己的镜像并理解背后的原理。第11、12章介绍Docker的集群管理及生态圈,帮助读者了解整个生态链。第13、14章是Docker测试及社区开发,帮助读者熟悉Docker社区的运作方式。
|
關於作者: |
华为Docker实践小组,致力于容器技术探索,结合华为CT/IT/Mobile等应用场景,重点在容器引擎、仓库、网络和卷存储等多领域攻关;同时该团队遵循开源精神,将开发过程中的诸多价值特性同步贡献到D0cker社区中,目前在D0cker社区贡献中全球排名稳居前三,国内排名第一。
|
目錄:
|
序
前 言
第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 网络IO 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
|
內容試閱:
|
序言
Forword 序我们这个团队的主业是操作系统内核开发。“太阳底下没有新鲜事”,这句话对于操作系统来说,有着深刻的意义。一个爆红的技术,寻根溯源,你会发现它往往已经在操作系统里潜伏很久。这种例子俯拾皆是。
虚拟化技术的源头可以追溯到20世纪70年代初期IBM的S370,但直到2003年的SOSP会议上一篇关于虚拟化的论文《Xen and the Art of Virtualization》引起广泛关注之后,虚拟化才走上发展的快车道。在软件领域,虚拟化技术把VMware打造成400亿美元量级的行业明星,又在硬件领域搅动了CPU、网络、存储等各个市场,迫使市场上的行业领袖做出相应的创新。现在,计算虚拟化、网络虚拟化、存储虚拟化这些概念已经深入人心。
而容器技术也不是全新的概念,系统容器最早可以追溯到20世纪80年代初期的chroot;打着轻量级虚拟化旗号的商用软件也是在21世纪之初由Virtuozzo提出的。但当时这个技术只是在系统管理员的小圈子里口耳相传,不愠不火地发展着。直到2013年,有一家叫作dotCloud的小公司开源了一个叫Docker的小项目……若将Docker的核心技术层层剥离开来分析,作为操作系统开发人员,我们是无法理解Docker为什么会爆发成为行业里的新星的。因为严格来说,Docker用的所有关键技术都早已存在:
Cgroup (Control Group)是Google在2006年启动开发的,算起来也有将近10年的历史了。
对于Namespace,从最早的Mount namespace算起,不断迭代到今天,已成为包括UTS(系统标识)、IPC(进程间通信)、 PID(进程标识)、Network(网络设备、IP地址以及路由表)、User(用户标识)等的技术,可谓洋洋大观。
Aufs的历史可以追溯到1993年的Inheriting File System,虽然Aufs没有进入Linux主线,但也已经在Debian、Gentoo这样的主流发行版中得到应用。
这些“大叔辈”的技术,通过Docker引擎的组合,焕发出“小鲜肉”的吸引力。而从另一个方面看,那些在技术和理念上更先进的项目,比如OSv,反而远没有得到这种众星捧月般的待遇。
为什么会这样?这个疑问促使我们摘下操作系统开发人员的帽子,带上系统运维人员的帽子,带上应用开发者的帽子,换个角度审视自己从前的工作。
在这个角色转换的过程中,我们得到了很多的收获:
首先,我们代表国内的技术人为Docker社区做出了一些贡献,此为收获一。
因为换了一个角度,对这个技术兴起背后的原因有了更深刻的理解,此为收获二。
利用工作之余,将技术经验转化为文字,把容器技术传播给更广泛的受众,此为收获三。
如果读者在阅读本书和实践后,不仅知其然,而且知其所以然,并与我们一同把容器技术的发展推向下一个阶段,那可以算是最大的收获了。
是以为序!
华为2012实验室 操作系统专家 胡欣蔚2015年11月
|
|