首页>参考读物>计算机科学与技术>软件与程序设计

Docker进阶与实战
作者 : 华为Docker实践小组 著
丛书名 : 容器技术系列
出版日期 : 2016-01-05
ISBN : 978-7-111-52339-0
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 262
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书主要介绍docker的技术原理和一些高级使用技巧,总共分为11章,第一章是docker简介,介绍docker的功能和组件,安装和使用。第二章是关于容器技术,包括容器技术的发展历程和容器技术的原理以及其依赖的底层技术。第三章是理解Docker镜像,介绍docker镜像的技术原理和特点。第四章是仓库进阶,介绍什么是仓库、docker hub、怎样部署私有镜像和Index及仓库的高级功能。第五章是Docker网络,介绍Docker网络的现状,基本的网络配置,高级网络配置和网络解决方案的进阶。第六章是Docker安全,包括深入理解Docker安全,docker的安全解决策略,安全加固进阶。第七章是Docker实战,包括理解Dockerfile,怎样编写Dockefile,发布自己的Docker镜像,基于Docker的持续集成,基于Docker的Web应用和发布。第八章是Docker API,包括RESTful API的应用示例和API的高级应用。第九章是Docker生态圈,介绍Docker生态圈重要的开源项目和未来的发展。第十章是参与Docker开发,介绍Docker开发的基本流程,怎样编译自己的Docker,怎样在Docker社区提交自己的补丁,还包括一些参与Docker开源社区的交流和沟通,以及Docker项目的组织架构。第十一章是附录。

图书特色

华为Docker实践小组,致力于容器技术探索,结合华为CT/IT/Mobile等应用场景,重点在容器引擎、仓库、网络和卷存储等多领域攻关;同时该团队遵循开源精神,将开发过程中的诸多价值特性同步贡献到Docker社区中,目前在Docker社区贡献中全球排名稳居前三,国内排名第一。

这是一个由100%技术精英组成的团队,对Docker的剖析,从产业到技术,再从技术到生态,以终为始;在Docker如此火热的时期依然清醒,没有忘记为什么会走上这条路,并全力探索怎样才能让这条路走得更加长远。这本书对容器技术本身理解得非常深刻,更加难能可贵的是,不拘于技术本身,对产业落地也有更深入的理解和探索。恭贺这本书的如期出版,为Docker的爱好者和实践者们做了更好的指引。
—— 梁胜 Rancher Labs创始人

I meet the Huawei team on a recent trip to Shenzhen and was impressed with the depth of knowledge and enthusiasm for Docker and containers that it demonstrated. Their team consists of valued contributors to Docker and many important Docker projects, and have a great amount of experience in the Docker ecosystem. This book is sure to inform and entertain those wishing to learn more about building modern distributed applications.
—— Rob Haswell Co-Founder and VP Product, ClusterHQ


Docker 是当前最火爆的开源软件项目,没有之一。Docker 技术对云时代的开发者意义重大,它已经成为向云平台交付分布式、微服务化互联网应用的事实标准。华为团队在 Docker 领域有颇深造诣,在全球范围也是 Docker 开源项目的主要贡献者。本书是开发者和云平台运维团队深入了解 Docker 容器技术的好机会。这本书由浅入深,覆盖了 Docker 开源项目的最新技术进展,也对国内外 Docker 生态圈做了细致的分析。其中关于 Docker API 和安全领域的叙述,对 Docker 实战具有重要的价值。
—— 喻勇 DaoCloud创始人

首先祝贺华为容器团队精心打造的新书出版!华为容器团队不仅有着丰富的Docker实践经验,并且也多次在国内外重大峰会中做过分享,在社区代码贡献中更是名列前茅,本书的所有作者都是Docker社区的积极贡献者,其中还有Linux kernel的maintainer和 OCI的maintainer提名者,他们的总结无疑是实践的积累和经验的分享,相信一定会对国内容器技术的发展起到很好的促进作用,同时也欢迎大家加入到华为容器团队,一起为开源社区贡献更多的力量!
—— 杜玉杰 华为开源能力中心主任工程师、开源专家

本书由一个真正钻研容器技术的团队写作,他们不仅仅是在使用Docker,更多的是在探索容器的未来之路,希望把“代码与产品,理论与实践”完美结合。本书内容从Docker的来源、镜像、仓库、安全、网络、卷存储,到生态、测试及社区贡献都有涉猎。无论你是入门级,还是已经有了较深的功底,这本书都会带你踏上新的台阶——正所谓“进阶”。

图书前言

为什么要写这本书
在计算机技术日新月异的今天,Docker也算是其中异常璀璨的一员了。它的生态圈涉及内核、操作系统、虚拟化、云计算、DevOps等热门领域,受众群体也在不断扩大。
Docker在国内的发展如火如荼,短短一两年时间里就陆续出现了一批关于Docker的创业公司。华为公司作为国内开源领域的领导者,对Docker也有很大的投入,我们认为有必要把自己的知识积累和实践经验总结出来分享给广大开发者。除了吸引更多的人投入到Docker的生态建设以外,我们也希望通过本书帮助更多的读者更好、更快地掌握Docker关键技术。
关于本书
目前市场已经有一些不错的Docker入门图书,但多侧重于入门和具体的应用,本书会介绍一些Docker关键技术原理和高级使用技巧,适合有一定基础的读者。另外,本书会对Docker涉及的各个模块、关系和原理进行系统梳理,帮助读者对Docker加深认识,更好地应用Docker部署生产环境,最大程度安全有效地发挥Docker的价值。
本书不仅适合一般的Docker用户,也适合Docker生态圈中的开发者,希望它可以成为一本Docker进阶的图书,帮助读者快速提升。
本书是由华为整个Docker团队合作完成的,笔者包括(排名不分先后):邓广兴、胡科平、胡欣蔚、黄强、雷继棠、李泽帆、凌发科、刘华、孙远、谢可杨、杨书奎、张伟、张文涛、邹钰。
本书的内容
本书的定位是有一定Docker基础的读者,所以在基本的概念和使用上,我们不会花过多的篇幅讲解,而是给出相应有价值的链接,作为读者的延伸阅读。
在内容上,除了对Docker进行系统的梳理外,同时还会对Docker背后的核心技术(即容器技术)及其历史进行介绍,进一步帮助读者更好地理解Docker。
章节划分则以功能模块为粒度,对每一个重要的模块进行了深入分析和讲解,同时也为热门领域单独开辟了章节。在每一章的最后都会讲解一些高级用法、使用技巧或实际应用中遇到的问题。虽然各章节的内容相对独立,但也会有一些穿插的介绍和补充,以帮助读者融会贯通,系统深入地理解Docker的每一个细节。
另外,本书的笔者都是一线的开发者和Docker社区活跃的贡献者,因此书中还专门准备了一个章节来介绍参与Docker开发的流程和经验。同时,伴随Docker的发展,Docker生态圈也在不断扩大并吸引了越来越多的人的关注。Docker集群管理和生态圈的介绍也将作为本书重点章节详细讲解。此外,Docker测试也是比较有特色的内容,分享了笔者在测试方面的经验。最后,附录中所包含的常用的Docker相关信息,可供读者需要时查询。
本书的内容和代码都是基于Docker 1.8版本的。在代码示例中,使用“#”开头的命令表示以root用户执行,以“$”开头的命令表示以普通用户执行。
勘误和支持
由于笔者水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以把书中发现的问题或建议发送到邮箱docker@huawei.com,我们会尽快回复大家的疑问,并把收集的信息整理修正。
致谢
本书是由整个Docker团队协作完成的,由于繁忙的工作书稿撰写几度中止。感谢我们的项目经理裴斐月女士,正是她的整体协调和督促,以及与出版社的大量沟通,才促成了本书的出版。感谢李泽帆,他不仅参与了本书的写作,而且承担了全书的审读工作,给出了大量有价值的建议。还要感谢Stephen Li、陈佳波、杨开封、胡欣蔚和张殿芳,以及其他华为公司主管对我们写书的大力支持,感谢机械工业出版社的编辑耐心专业的指导和审核。最后,感谢我们每一位家人的支持陪伴,我们的工作因为有了家人的支持和期待才变得更有意义。

华为Docker实践小组
2015年11月

上架指导

计算机\程序设计

封底文字

这是一个由100%技术精英组成的团队,对Docker的剖析,从产业到技术,再从技术到生态,以终为始;在Docker如此火热的时期依然清醒,没有忘记为什么会走上这条路,并全力探索怎样才能让这条路走得更加长远。这本书对容器技术本身理解的非常深刻,更加难能可贵的是,不拘于技术本身,对产业落地也有更深入的理解和探索。恭贺这本书的如期出版,为Docker的爱好者和实践者们做了更好的指引。
-- Rancher Labs创始人 梁胜
(数码样的封底只放一个推荐语,正式出版时,封底会有三个推荐语)

作者简介

华为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

教学资源推荐
作者: [美]保罗·C. 乔根森(Paul C. Jorgensen) 著
作者: 郑阿奇 主编 顾韵华 等编著
作者: [美]德洛莉丝 M. 埃特尔(Delores M. Etter) 著
参考读物推荐
作者: Matt Peiletier, Zed Shaw
作者: 王国辉 陈英 等编著
作者: 万国根等
作者: (美)Holden Karau 著