搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Docker实战
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121303067
  • 作      者:
    (美)Jeff Nickoloff著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2017
收藏
编辑推荐

*威作者:具有十多年虚拟化研究经验,国内首批研究Docker容器技术的专家,Docker开源项目贡献者

快速入门:透过简单的理论讲解,带你进入Docker的世界

步骤详细:手把手教你配置方法,为你量身定制自己的Docker

内容丰富:揭露镜像制作过程,教你搭建镜像仓库


展开
作者简介

胡震,上海凡用信息科技有限公司CTO,长夜公司首席架构师,DockOne社区优秀翻译。

杨润青,90后博士僧,研究方向是网络和信息安全。

黄帅(Henry Huang),目前就职于趋势科技,负责集群运维开发和维护工作,所在项目从2011年使用AWS服务至今,积累一定的AWS运维经验。 

Jeff Nickoloff会建立大规模的服务站,写关于技术的文字,并帮助人们实现他们的产品目标。他曾在****.com、Limelight网络和亚利桑那州立大学做这些事情。2014年离开***,他创办了一家咨询公司,专注于为财富100强的企业和创业公司提供工具、培训和*佳实践。


展开
内容介绍

自从2013年3月Docker 0.1版本发布以来,以其为代表的容器技术发展也走上了快车道,Docker容器在很大程度上改变了软件的架构设计、开发和运维部署方式,也给早些年就提出的微服务架构模式插上了快速起飞的翅膀。本书由Docker社区**人Jeff Nickoloff编写,共分为三部分,**部分(1~6章)重点介绍Docker容器的资源隔离和权限控制及基础理论,第二部分(7~10章)详细解释了如何打包制作镜像以及各种镜像分发基础设施的建设,*后一部分(11~12章)聚焦于Docker容器的组合操作也就是多容器和多主机环境的管理。本书图文并茂,结合基本原理和具体案例给大家提供了多个不错的实战机会。 作为目前*炙手可热的容器技术类图书,本书适用于互联网、云计算及企业级软件开发、架构、测试及运维人员快速上手熟悉Docker容器,搭建以Docker为核心的基础设施,并在生产环境中快速部署应用以及管理容器集群。

展开
精彩书摘

  译 序

  2016 年4 月中旬DockOne.io 社区的发起人李颖杰找到了杨润青、黄帅和我三位社区译者,说要配合电子工业出版社翻译Docker 大神Jeff Nickoloff 的新书——《Docker 实战》,我们仨欣然答应。这一方面是出于对大神的景仰,另一方面也是我们DockOne.io 社区以及我们每一位会员想为国内Docker 容器技术的发展添砖加瓦。紧张的翻译工作从今年4 月底开始,到6 月底交稿,之后我们又配合出版社完成了本书的审读工作,今天我们终于看到本书中文版《Docker 实战》的出版。此时此刻的心情我们也是非常激动,感谢我们DockOne.io社区以及出版社的小伙伴,大家都是好样的。

  本书的内容,顾名思义,就是为广大技术人员如何创建、部署和管理Docker 容器以及基于Docker 的应用程序进行理论及实战练习准备的。对于Docker 容器的工作原理以及每一个具体功能都面面俱到,特别地,对于如何在生产环境中部署管理Docker 容器和集群,本书也花了很多的笔墨在探讨。

  以Docker 为代表的容器适合运行所有的无桌面的服务型应用,从2013 年3 月Docker0.1 版本发布以来,在短短的四年时间里,Docker 已经风靡全球的互联网技术圈。回顾过去的四年,Docker 容器技术可以说是每年都上一个新台阶,2013 年的小试牛刀,2014 年年中的Docker 1.0 版本的发布以及年底Docker Machine、Swarm 和Compose 三剑客的推出,2015 年Docker 开始进入互联网公司的生产环境部署,以及2016 年开始发力进入企业级应用,CaaS 市场也日渐成熟,与此相呼应的就是整个容器生态圈包括K8S、Mesos 等集群调度系统在内的蓬勃发展以及微服务架构模式的落地开花。特别地,微服务可以说与Docker容器是绝配,目前国内有不少互联网公司包括一些创业公司正在打算或者已经实施基于Docker 容器部署实现各自的微服务架构模式了。

  本书在翻译出版阶段,适逢Docker 1.12 版本的发布,该版本的内置Swam 编排机制可以说是划时代性的新特性。由于时间的关系,该部分最新的内容还无法及时写入到本书中,不过没有关系,大家在阅读本书时,也可以看到作者对于容器集群编排系统是如何做出一些前瞻性的预判的介绍。相信大家通过阅读本书,都会受益匪浅!

  胡震

  上海凡用信息科技有限公司 CTO

  序

  我第一次听说Docker,是通过从2013 年PyCon 会议的YouTube 视频,它被第一时间发布到了Hacker News。Docker 的创始人Solomon Hykes 在他题为“Linux 容器未来”的五分钟谈话中,揭开了未来我们如何对外交付和运行软件,不仅仅是在Linux 中,而是在几乎所有的平台和架构之上。虽然他在第五分钟突然语塞,但毫不影响我清晰地认识这项技术在沙箱环境中运行Linux 应用程序,配以用户友好的命令行工具和镜像分层的独特概念,都将改变很多东西。

  Docker 大大改变了多数软件的开发和运维模式。架构设计、开发,以及运维方式,在Docker 出现前后有很大的不同。尽管Docker 没有规定具体的方案,但它迫使人们思考微服务和不可变基础设施的方法。

  一旦Docker 被更广泛地采用,人们便开始调查Docker 所使用的低层技术,更明确了Docker 的成功并不是技术本身,而是围绕这个项目的人性化接口、API 和生态系统。许多大公司如谷歌、微软和IBM 都在Docker 项目聚首,并携手合作,使它变得更好,而不是去构建另一个竞争对手。事实上,像微软、Joyent、英特尔和VMware 等公司,虽在Linux 容器实现中都换掉了Docker,却为他们自己的容器产品保留了Docker 的命令行接口。在短短两年时间里,很多新公司都如雨后春笋般成立,为的是增强开发者的体验和填补Docker 生态系统的空白,形成一个健康且热心的Docker 社区。

  就我个人而言,我帮助微软发布了其第一款支持跨平台ASP.NET 的正式Docker 镜像。我的下一个贡献,会将Docker 命令行接口移植到Windows。这个项目帮助了许多Windows开发人员熟悉Docker,奠定了微软对Docker 项目进行长期贡献的基础。Windows 移植项目也让我以少数Docker 贡献者的视角工作了两个多月。后来,我们还有许多其他的贡献,以确保Docker 成为微软Azure 云服务的重要工具。我们下一个大的目标就是Windows 容器,以及将Windows Server 2016 的新功能与Docker 完全集成在一起。

  令人兴奋的是,我们还在容器革命的初期。一切快得令人难以置信,随着每天出现的新技术和开源工具,如今,我们认为这一切将理所当然地会在未来数个月内继续发生改变。

  就在这个领域,创新者和我们行业最伟大的头脑正在合作,为软件行业的其他领域,打造大量的创新工具,使发布和运行软件不再受到规模变化的影响。

  通过许多发表在网上有关Docker 和微服务的文章,Jeff Nickoloff 将自己定位为新兴的Docker 社区的第一人。他良好的写作功底加上对技术性话题的详细解答,能帮助开发人员快速学习和使用Docker 生态系统,并从中受益。而且,同样重要的是,他还指出了Docker的缺点。本书从零开始,展示了在生产环境中Docker 的部署,描述了Docker 拥有的复杂功能,并对相同任务的多种实现方案进行了比较。

  在阅读本书时,你不仅要学会如何有效地使用Docker,也一定要弄明白它的工作原理,Docker 每一个详细功能如何使用,以及在生产环境中使用Docker 的最佳方法。我个人在读本书时,有很多“哦,这个功能是做这个的呀”的时刻。写这本书,特别是针对一项总是以惊人速度在变革的技术,就像是在一辆行驶速度为60 英里/小时的车子上画画一样困难。Jeff 的出色工作,既覆盖了Docker 的前沿功能,又为本书奠定了一个坚实的理念基础,即无论Docker 在未来的几个月甚至几年中有什么样的变化,本书关于容器和微服务的理念,不会改变。

  希望你和我一样觉得能从这本书受益匪浅。

  Ahmet Alp Balkan

  微软开放源码软件工程师

  Docker 贡献者

  感 谢

  与写书不同,过去我的人生中大部分时间在处理简单的事情。在开始写作本书之前我就知道,写作需要高度的纪律性和积极性,但我没有让自己失望。

  首先,我想感谢Manning 出版社给我这个机会来完成这项工作、Ahmet Alp Baken 写了序,以及Niek Palm 给整个书稿做了技术校对。许多人审阅书稿,并在成书的各个阶段提供了很多意见,包括Robert Wenner, Jean-Pol Landrain, John Guthrie, Beno?t Benedetti,Thomas Peklak, Jeremy Gailor, Fernando Fraga Rodrigues, Gregor Zurowski, Peter Sellars, MikeShepard, Peter Krey, Fernando Kobayashi, 和Edward Kuns。

  在这个最困难的时刻,成功依赖于一个集体的贡献和支持。如果没有他们的贡献,我不会站在这里。

  ?? Portia Dean,她在过去一年给了我合作和支持。Portia,你是我的伙伴,我的正义和坚持的核心。没有你,我将在某处迷失一年。我爱冒险,对下一次会发生什么总是缺乏等待的耐心。

  ?? 我的父母,Kathy 以及Jeff Nickoloff,从年轻时就支持我的技术好奇心,培养我坚强的意志。

  ?? Neil Fritz,超过15 年和我一起做项目,为了得到切片比萨,我们彼此心灵相通。

  ?? Andy Will 以及PHX2 的优秀工程师们,他们欢迎我到亚马逊,并始终在提高我们的技术门槛,与他们合作本身就是一种学习。

  ?? Nick Ciubotariu,打了漂亮的一仗,提高了技术领导力的门槛。

  ?? 卡特尔咖啡工作室,今年我在你们的总部花的时间要比我在家多很多。你那有世界上最好的烤肉之一。旧金山人都会想念它。

  最后,我要感谢全世界志同道合的朋友,他们在这段旅程与我共同学习、分享、挑战或倾听。

  关于本书

  《Docker 实战》的宗旨是向开发人员、系统管理员和混合技能的其他计算机用户,介绍Docker 项目和Linux 容器的概念。Docker 和Linux 都是开源的项目,有丰富的在线文档,但无论如何,入门仍是一项艰巨的任务。

  Docker 是有史以来增长最快的开源项目之一,在其周围的生态系统也是以类似的速度不断发展。由于这些原因,本书的重点完全在于Docker 的工具集。这一范围限定不仅能使内容选材更精准,帮助读者了解在他们的特有实例中如何应用Docker 功能;一旦读者们牢牢把握住了本书涉及的基础知识,他们也能应对更大的问题,进而探索整个生态系统。

  路线图

  本书被分成3 个部分。

  第1 部分介绍Docker 和容器的特点。帮助你理解如何安装和卸载Docker 中发布的软件。你将学习如何运行、管理,并在不同的容器结构连接不同类型的软件。第一部分介绍每一个Docker 用户需要的基本技能。

  第2 部分介绍Docker 的封装和软件的分发,涵盖了不同大小Docker 镜像的底层机制,以及对不同的封装和分发方法所进行的调查。这一部分还包括对Docker Distribution 项目的的深入分析。

  第3 部分介绍多容器项目和多主机环境,覆盖了Docker Compose、Machine 和Swarm项目。这部分内容会指导构建和部署多个真实的实例,规模接近于大型的服务器软件。

  代码约定和下载

  本书是关于一个多用途的工具,所以很少有“代码”列入书中。取而代之的是数以百计的shell 命令和配置文件。它们通常来用POSIX 兼容的语法。针对Docker 提供的一些特定于Windows 的功能,用户需要注意那些为了提高可读性或澄清注解而分行的命令。代码托管在GitHub 上(https://github.com/dockerinaction),引用的镜像库可在Docker Hub(https://hub.docker.com/u/dockerinaction/)中找到。运行这些示例并不需要Docker Hub 或GitHub 的经验。

  本书使用了几个开源项目,既展示了Docker 的各种功能,又帮助读者转变了软件管理的范式。没有一个单独的软件“堆栈”或系列比Docker 本身更突出。通过这些实例,读者将会使用如WordPress、Elasticsearch、Postgres、shell 脚本、Netcat、Flask、JavaScript、NGINX和Java 等工具。唯一的依赖就是Linux 内核。

  关于封面插图

  《Docker 实战》的封面,标题为“渔父”的插图,是从19 世纪的许多艺术家珍藏中挑选出来的,由Louis Curmer 编辑,于1841 年在巴黎出版。藏品的标题意为他们自己所画的法国人。每个插图,都是手绘,藏品丰富的变化生动地勾勒出200 年前在世界各地区、城镇、村庄和邻里文化有多么不同。由于相互隔离,说着不同的方言或语言,在街道上或农村,从人们的着装中很容易辨认他们住在哪里,以及交易着什么,生活的状态如何。自那时以来,着装规范改变了,那时丰富的地区多样性,也已经消失了。现在很难分辨来自不同大陆的居民,更别说不同的城市或地区。也许我们已经为更多样化的个人生活,当然包括更多样化和快节奏的技术化生活,牺牲了文化的多样性。

  而此时也很难区分计算机类的书籍,Manning 出版社用该书封面来纪念计算机业务的开创性和创新性,以及200 年前丰富的地域和多样性的生活——就像这个藏品的那些图片,把我们带回到了生活本身。


展开
目录

目    录
第1部分  保持一台干净的机器
第1章  欢迎来到Docker世界 2
1.1  什么是Docker 3
1.1.1  容器 3
1.1.2  容器不是虚拟化 4
1.1.3  在隔离的容器中运行软件 4
1.1.4  分发容器 6
1.2  Docker解决了什么问题 6
1.2.1  有条理 7
1.2.2  提高可移植性 8
1.2.3  保护你的机器 9
1.3  为什么Docker如此重要 10
1.4  何时何处使用Docker 11
1.5  案例:“hello world” 11
1.6  小结 13
第2章  在容器中运行软件 14
2.1  从Docker命令行工具获得帮助 14
2.2  控制容器:建立一个网站的监控器 15
2.2.1  创建和启动一个新的容器 16
2.2.2  运行交互式容器 17
2.2.3  列举、停止、重新启动和查看容器输出 18
2.3  已解决的问题和PID命名空间 20
2.4  消除元数据冲突:构建一个网站农场 23
2.4.1  灵活的容器甄别 24
2.4.2  容器的状态和依赖 26
2.5  构建与环境无关的系统 28
2.5.1  只读文件系统 29
2.5.2  环境变量的注入 31
2.6  建立持久的容器 34
2.6.1  自动重启容器 35
2.6.2  保持容器运行init和supervisor进程 36
2.7  清理 38
2.8  小结 39
第3章  软件安装的简化 40
3.1  甄别软件 41
3.1.1  什么是仓库 41
3.1.2  使用标签 42
3.2  查找和安装软件 43
3.2.1  命令行使用Docker Hub 43
3.2.2  通过网站访问Docker Hub 45
3.2.3  使用替代注册服务器 47
3.2.4  镜像文件 47
3.2.5  从Dockerfile安装 49
3.3  安装文件和隔离 49
3.3.1  镜像层实战 50
3.3.2  分层关系 51
3.3.3  容器文件系统抽象和隔离 52
3.3.4  工具集和文件系统结构的好处 53
3.3.5  联合文件系统的不足 53
3.4  小结 54
第4章  持久化存储和卷间状态共享 55
4.1  存储卷的简介 56
4.1.1  存储卷提供容器无关的数据管理 56
4.1.2  NoSQL数据库使用存储卷 57
4.2  存储卷的类型 60
4.2.1  绑定挂载卷 60
4.2.2  Docker托管卷 63
4.3  共享存储卷 65
4.3.1  主机依赖的共享 65
4.3.2  通用共享和volumes-from标志 66
4.4  托管卷的生命周期 68
4.4.1  托管卷的权限 68
4.4.2  存储卷的清理 69
4.5  存储卷的高级容器模式 70
4.5.1  存储卷容器模式 70
4.5.2  数据经压缩的存储卷容器 72
4.5.3  多态容器模式 73
4.6  小结 74
第5章  网络访问 75
5.1  网络相关的背景知识 76
5.1.1  基础:协议,接口和端口 76
5.1.2  高级:网络,NAT和端口转发 77
5.2  Docker的网络 79
5.2.1  本地Docker网络的拓扑结构 79
5.2.2  四种网络结构原型 80
5.3  Closed容器 81
5.4  Bridged容器 83
5.4.1  访问外部网络 84
5.4.2  自定义命名解析 85
5.4.3  开放对容器的访问 88
5.4.4  跨容器通信 91
5.4.5  修改网桥接口的配置 92
5.5  Joined容器 93
5.6  Open容器 95
5.7  跨容器依赖 96
5.7.1  链接――本地服务发现 97
5.7.2  链接别名 98
5.7.3  环境变量的改动 99
5.7.4  链接的本质和缺点 101
5.8  小结 102
第6章  隔离――限制危险 103
6.1  资源分配 104
6.1.1  内存限制 104
6.1.2  CPU 105
6.1.3  设备的访问权 108
6.2  共享内存 108
6.2.1  跨容器的进程间通信 109
6.2.2  开放内存容器 110
6.3  理解用户 111
6.3.1  Linux用户命令空间 111
6.3.2  run-as用户 111
6.3.3  用户和卷 114
6.4  能力――操作系统功能的授权 116
6.5  运行特权容器 117
6.6  使用加强工具创建更健壮的容器 118
6.6.1  指定额外的安全选项 119
6.6.2  微调LXC 120
6.7  因地制宜地构建容器 121
6.7.1  应用 121
6.7.2  高层的系统服务 122
6.7.3  低层的系统服务 122
6.8  小结 122
第2部分  镜像发布:如何打包软件
第7章  在镜像中打包软件 126
7.1  从容器构建镜像 126
7.1.1  打包Hello World 127
7.1.2  打包Git 128
7.1.3  审查文件系统的改动 128
7.1.4  Commit――创建新镜像 129
7.1.5  可配置的镜像属性 130
7.2  深入Docker镜像和层 131
7.2.1  深入联合文件系统 132
7.2.2  重新认识镜像、层、仓库和标签 134
7.2.3  镜像体积和层数限制 137
7.3  导出和导入扁平文件系统 139
7.4  版本控制的最佳实践 141
7.5  小结 143
第8章  构建自动化和高级镜像设置 144
8.1  使用Dockerfile打包Git 144
8.2  Dockerfile入门 148
8.2.1  元数据指令 148
8.2.2  文件系统指令 152
8.3  注入下游镜像在构建时发生的操作 155
8.4  使用启动脚本和多进程容器 158
8.4.1  验证环境相关的先决条件 158
8.4.2  初始化进程 160
8.5  加固应用镜像 161
8.5.1  内容可寻址镜像标识符 161
8.5.2  用户权限 162
8.5.3  SUID和SGID权限 164
8.6  小结 166
第9章  公有和私有软件分发 168
9.1  选择一个分发方法 169
9.1.1  分发选项图谱 169
9.1.2  选择标准 169
9.2  通过托管Registry发布 172
9.2.1  通过公有仓库发布:你好!Docker Hub 172
9.2.2  使用自动构建发布公有项目 174
9.2.3  私有托管仓库 176
9.3  私有Registry介绍 178
9.3.1  使用Registry镜像 180
9.3.2  从Registry使用镜像 181
9.4  镜像的手动发布和分发 181
9.5  镜像源代码分发工作流程 186
9.6  小结 189
第10章  运行自定义Registry 190
10.1  运行个人Registry 191
10.1.1  再度介绍镜像 192
10.1.2  介绍V2 API 193
10.1.3  定制镜像 195
10.2  集中式Registry的增强 196
10.2.1  创建一个反向代理 197
10.2.2  在反向代理上配置HTTP(TLS) 199
10.2.3  添加身份认证层 202
10.2.4  客户端兼容性 206
10.2.5  应用于生产环境之前 208
10.3  持久化的BLOB存储 210
10.3.1  微软Azure托管远程存储 211
10.3.2  AWS S3托管远程存储 212
10.3.3  RADOS(Ceph)的内部远程存储 214
10.4  扩展访问和延迟的改进 215
10.4.1  与元数据缓存集成 215
10.4.2  使用存储中间件简化BLOB传输 217
10.5  通过通知集成 219
10.6  小结 224
第3部分  多容器和多主机环境
第11章  Docker Compose声明式环境 228
11.1  Docker Compose:第一天的启动并运行 228
11.1.1  用一个简单的开发环境入门 229
11.1.2  一个复杂的架构:分布式系统和Elasticsearch的集成 231
11.2  环境内的迭代 233
11.2.1  构建、启动和重新构建服务 234
11.2.2  服务伸缩和删除 237
11.2.3  迭代和持久化状态 238
11.2.4  网络和连接问题 239
11.3  开始一个新项目:三个示例中的Compose YAML 240
11.3.1  启动前的构建、环境、元数据和网络 240
11.3.2  已知的组件和绑定挂载卷 241
11.3.3  卷容器和扩展服务 242
11.4  小结 243
第12章  Docker Machine和Swarm集群 245
12.1  介绍Docker Machine 246
12.1.1  构建和管理Docker Machine 246
12.1.2  配置Docker客户端与远程Daemon工作 249
12.2  Docker Swarm介绍 252
12.2.1  借助于Docker Machine构建Swarm集群 252
12.2.2  Swarm扩展了Docker远程API 255
12.3  Swarm调度 258
12.3.1  Spread算法 258
12.3.2  用过滤器调整调度 260
12.3.3  BinPack和随机调度算法 263
12.4  Swarm服务发现 265
12.4.1  Swarm和单主机网络 266
12.4.2  服务发现生态系统和权宜之计 268
12.4.3  展望多主机网络 269
12.5  小结 270
后记 271

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证