Docker实战

Docker实战 pdf epub mobi txt 电子书 下载 2025

[美] Jeff Nickoloff(杰夫·尼克罗夫) 著,胡震 译
图书标签:
  • Docker
  • 容器化
  • DevOps
  • 微服务
  • Linux
  • 云计算
  • 应用部署
  • 持续集成
  • 自动化
  • 开发运维
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121303067
版次:1
商品编码:12013041
品牌:Broadview
包装:平装
开本:16开
出版时间:2016-11-01
用纸:胶版纸
页数:292
字数:352000
正文语种:中文

具体描述

编辑推荐

适读人群 :网络开发人员

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

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

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

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


内容简介

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

作者简介

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

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

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

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


目录

目 录
第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

精彩书摘

  译 序

  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 年前丰富的地域和多样性的生活——就像这个藏品的那些图片,把我们带回到了生活本身。


前言/序言

2011年,我开始在Amazon.com工作。在第一周我的生活就被改变了,因为我学会了如何使用他们的内部版本,对组件依赖建模和制作部署工具。这种自动化的管理方法,我一直都知道是可能的,但从来没有见过。我过去的团队,每一季度部署一次,需要10小时完成。在亚马逊公司,我看着滚动部署工具,将当天早些时候我做出的改动,推送到数百台遍布全球的机器上。和其他公司的前景相比,这就是大科技公司的工程优势。

早在2013年,我想使用Graphite(监控数据的收集和绘图套件)工作。有一天,我要安装该软件,并开始整合个人项目。应付这些事情,我有几年开源工具的使用经验,但很少依赖于Python这么大的生态系统。安装说明很长且模糊,在接下来的几个小时里,我发现许多安装步骤没有文档说明。这对一个有较为深入的Python生态系统知识的人来说,可能显而易见。但对我来说,在尝试了几个安装指南,阅读了相关的配置文件,并和代码库的依赖关系进行了史诗般地战斗后,我认输了。

那是我一生中最沮丧的几个小时。我不想和这个项目再有任何关系。更糟糕的是,因为它,我改变了当前的系统环境,经常使用的那些软件现在变得无法兼容。而要还原这些变化,则需要很长一段时间,让我尴尬不已。

我清楚地记得那年5月1日,我在办公室,当我决定看看Hacker News上面有没有新的方法来提高我的能力时,并于那个被称为Docker的技术文章,一整个星期上了几次的头版。那天晚上,我决定去试试。我找到了那个网站,几分钟内安装了软件。我在计算机桌面上运行着Ubuntu,而Docker只有两个依赖:LXC和Linux内核本身。

像其他人一样,我尝试了“Hello,World”的示例,但什么都不会。接下来,我安装了Memcached,一分钟内下载并运行。然后我启用了WordPress,它带着捆绑好的MySQL数据库。我还拉了几个不同的Java、Python镜像。此时我回想起安装Graphite那可怕的一天。我打开Docker Index(在Docker Hub之前),并做了一个快速搜索。

结果出来了,它就在那里——某些用户做好了Graphite镜像。我抓取下来,并创建了一个新容器,一个简单且配置好的Graphite服务器就在我的机器上运行了。我只用了不到一分钟的下载时间就搞定了它,而几个月前同样的安装花费了几个小时,结果还是失败。Docker能够用最简单的示例,以及最小的努力来展现它的价值,我臣服了。

接下来的一周,我通过和好朋友之间关于Docker和容器的直接对话,测试了他的耐心。我解释了包管理的好处,以及文件系统默认强制隔离可解决的一些管理上的问题;我大谈资源利用效率和初始化延迟问题。我向其他几个同事反复地讲摸索着使用容器的故事。每个人听后都有类似的问题,“哦,这就像虚拟化吗?”“如果我有虚拟机,为什么我还需要这个?”问的问题越多,我就想了解得更多。随着项目的普及,我将这个故事分享给了许许多多的人。

当我有机会公开发言时,我开始谈论有关Docker的内容。在2013年和2014年,只有少数人听说过Docker,甚至更少的人在实际中试过该软件。大多数情况下,总有一些怀疑的系统管理员和兴奋的开发人员,而且他们数量相当。人们的反应都大不相同。有些是纯粹的反对者,显然倾向于维持现状。看得出来,他们经历过某些困难,曾经遇到过很类似的日常问题。而另一些人的兴奋反应和我很相似。

2014年的夏天,Manning的副发行人打电话给我,让我谈谈Docker。在手机上谈了一个多小时后,他问我是否有足够的内容构成一本书。我的看法是这些内容足够几本书。他问我,是否有兴趣写写,这让我变得更加兴奋,虽然那时我用Docker已经有一段时间了。那年秋天,我离开Amazon.com,然后开始了《Docker实战》这本书的创作。

今天,我坐在完成的手稿面前。写这本书的目的是让更多的人能尽快学会使用Docker,在本书中,他们也将了解基本的机制和原理。我希望读者有了这些知识后,可以理解Docker是如何被应用到实际问题中,以及如何更好地应用在自己的实例中。



《Docker实战》是一本面向技术实践者,深度剖析Docker容器化技术的书籍。它旨在为读者提供一套全面、系统且极具操作性的Docker学习指南,涵盖从基础概念的理解到高级应用场景的探索。本书的目标读者包括但不限于:希望了解并掌握容器化技术以提升开发效率和运维灵活性的开发人员、系统管理员、DevOps工程师,以及对微服务架构、CI/CD流程感兴趣的技术爱好者。 本书结构与内容概览: 全书共分为若干个主要部分,每个部分都围绕Docker的核心功能和实际应用展开,力求由浅入深,循序渐进。 第一部分:Docker基础概念与环境搭建 第一章:容器化技术的缘起与Docker简介 深入探讨虚拟化技术与容器化技术的区别与联系,阐述容器化技术为何能成为当前软件开发与部署的主流趋势。 介绍Docker项目的历史、架构设计以及它在生态系统中的地位。 强调Docker带来的核心价值:一致性、隔离性、可移植性、效率和成本效益。 第二章:Docker安装与快速入门 提供针对主流操作系统(Linux, macOS, Windows)的详细Docker安装指南,包含各种版本的具体步骤和注意事项。 介绍Docker的基本安装验证方法,确保读者能够顺利搭建本地Docker开发环境。 通过一个简单的“Hello, World”示例,让读者快速体验Docker的运行流程,建立初步的感性认识。 第三章:Docker核心概念详解 镜像(Image): 深入剖析Docker镜像的构成,包括UnionFS、分层文件系统、Dockerfile如何构建镜像。讲解镜像的继承、复用机制,以及如何有效地管理和优化镜像大小。 容器(Container): 详细解释容器的生命周期,包括创建、启动、停止、重启、删除等操作。阐述容器与宿主机之间是如何隔离的,以及容器内部的进程如何运行。 仓库(Registry): 介绍Docker Hub、私有仓库(如Harbor)等仓库的概念,讲解如何推送和拉取镜像,以及仓库在镜像分发中的重要作用。 Docker Daemon与Docker Client: 阐述Docker的客户端-服务器架构,以及它们之间的通信机制。 第二部分:Docker核心命令与操作实践 第四章:Docker镜像操作 详细讲解`docker pull`、`docker push`、`docker images`、`docker search`等常用镜像管理命令。 介绍`docker build`命令的使用,深入分析`Dockerfile`的语法和指令(`FROM`, `RUN`, `COPY`, `ADD`, `CMD`, `ENTRYPOINT`, `EXPOSE`, `ENV`, `ARG`, `VOLUME`, `WORKDIR`等)。 演示如何通过`Dockerfile`构建自定义的应用程序镜像,并讲解构建过程中的优化技巧。 介绍`docker tag`命令,用于给镜像打上不同的标签。 讲解`docker rmi`命令,用于删除镜像,并讨论镜像清理策略。 第五章:Docker容器操作 详细讲解`docker run`命令的各种参数,包括端口映射(`-p`)、卷挂载(`-v`)、环境变量(`-e`)、网络模式(`--net`)、容器命名(`--name`)等。 演示如何从现有镜像创建并运行容器。 讲解`docker ps`命令,用于查看正在运行的容器,以及`docker ps -a`用于查看所有容器(包括已停止的)。 介绍`docker start`、`docker stop`、`docker restart`、`docker kill`、`docker rm`等容器生命周期管理命令。 演示如何进入运行中的容器进行交互式操作(`docker exec`)。 讲解容器日志的查看与管理(`docker logs`)。 第六章:Docker数据持久化与管理 深入探讨Docker数据卷(Volumes)的概念和作用,分析其与bind mount的区别。 演示如何创建、管理和使用Docker数据卷,包括命名卷和匿名卷。 讲解如何将数据卷挂载到容器中,实现数据的持久化存储,以及容器重启或删除后数据不丢失。 介绍Docker命名空间(Namespaces)和控制组(Control Groups,cgroups)的原理,解释它们如何实现容器的资源隔离与限制。 讲解如何限制容器的CPU、内存等资源使用(`--cpus`, `--memory`等参数)。 第三部分:Docker网络、安全与高级特性 第七章:Docker网络配置 深入分析Docker默认的网络模式:bridge、host、none。 讲解如何配置自定义网络(`docker network create`),以及overlay网络在多主机环境下的应用。 演示容器之间的通信方式,包括DNS解析、IP地址访问等。 介绍Docker的端口转发、负载均衡(通过代理实现)等网络服务。 第八章:Docker安全实践 探讨Docker镜像安全,包括镜像扫描(如Clair, Trivy)、漏洞修复。 讲解容器运行时安全,包括用户权限管理、Seccomp、AppArmor等安全机制的应用。 介绍Docker Registry的安全配置,如HTTPS、身份认证。 讨论最小化镜像原则,减少攻击面。 第九章:Docker Compose 介绍Docker Compose的核心概念和作用,它如何简化多容器应用的定义和管理。 详细讲解`docker-compose.yml`文件的语法和常用指令。 演示如何使用Docker Compose定义和启动复杂的应用栈,如Web服务器+数据库+缓存。 讲解Compose项目的生命周期管理:`up`、`down`、`ps`、`logs`等命令。 讨论Docker Compose在开发、测试和生产环境中的应用。 第四部分:Docker在DevOps与微服务中的应用 第十章:Docker与CI/CD流程集成 阐述Docker如何成为CI/CD流水线中的关键环节。 演示如何将Docker集成到Jenkins、GitLab CI等主流CI/CD工具中。 讲解如何构建自动化构建、测试、部署的流程,实现快速迭代和持续交付。 介绍Docker镜像作为Artifact(产物)的管理和版本控制。 第十一章:Docker与微服务架构 分析Docker如何支撑微服务架构的独立部署、弹性伸缩和故障隔离。 讲解如何使用Docker构建和部署微服务应用。 介绍服务注册与发现、API网关等微服务模式在Docker环境下的实现。 第十二章:Docker Swarm与Kubernetes入门 Docker Swarm: 介绍Docker原生的容器编排工具Swarm,讲解其基本概念(Node, Service, Task)和操作。演示如何快速搭建和管理Docker Swarm集群。 Kubernetes(K8s)入门: 简要介绍Kubernetes作为当前最主流的容器编排平台。概述其核心概念(Pod, Deployment, Service, Namespace等),并提供一个简单的Kubernetes部署示例,为读者后续深入学习Kubernetes打下基础。 对比与选择: 分析Docker Swarm与Kubernetes的优缺点,以及在不同场景下的适用性。 第五部分:Docker生态系统与进阶话题 第十三章:Docker容器编排进阶 深入探讨Docker Compose在更复杂场景下的应用,如环境变量管理、依赖关系配置、多阶段构建优化。 进一步拓展Kubernetes的学习路径,介绍更高级的Kubernetes概念,如StatefulSets, DaemonSets, Jobs, Ingress等。 讲解Helm在Kubernetes应用包管理中的作用。 第十四章:Docker安全进阶与性能优化 更深入地探讨镜像的安全扫描工具和策略。 介绍容器运行时安全配置的实践,包括网络策略、Pod Security Policies等。 分享Docker性能优化的常见方法,包括镜像优化、网络配置调优、存储驱动选择等。 探讨容器化应用程序的监控与日志管理策略。 第十五章:Docker在特殊场景的应用 讲解Docker在数据库部署、大数据平台(如Spark, Hadoop)构建中的应用。 介绍Docker如何支持CI/CD中的自动化测试(单元测试、集成测试、端到端测试)。 探讨Docker在IoT设备、边缘计算中的部署方式。 本书的特色: 实践导向: 全书贯穿大量的代码示例、命令操作和实际场景模拟,读者可以通过跟随实践快速掌握Docker技能。 由浅入深: 从Docker的基础概念讲起,逐步深入到高级特性和应用场景,适合不同基础水平的读者。 全面覆盖: 涵盖Docker的核心命令、数据管理、网络配置、安全实践,以及在DevOps和微服务中的广泛应用。 生态整合: 不仅关注Docker本身,还涉及Docker Compose、Docker Swarm以及Kubernetes等相关技术,帮助读者构建完整的容器化技术栈。 问题导向: 针对实际开发和运维中可能遇到的问题,提供解决方案和最佳实践。 通过阅读《Docker实战》,您将能够: 1. 深刻理解容器化技术的原理和优势。 2. 熟练掌握Docker的安装、配置和日常操作。 3. 高效地构建、管理和部署Docker镜像与容器。 4. 解决Docker应用中的数据持久化和网络通信问题。 5. 提升Docker应用的安全性和性能。 6. 将Docker无缝集成到DevOps的CI/CD流程中。 7. 利用Docker构建和管理微服务架构。 8. 初步掌握Docker Swarm和Kubernetes等容器编排工具。 本书不仅是Docker技术的学习手册,更是您迈向现代化软件开发与运维之路的有力伙伴。

用户评价

评分

《Docker实战》这本书,我花了不少时间去消化,但每一分钟都觉得物有所值。我之前对Docker的认知,可能还停留在“能运行容器”的层面,对于如何更好地管理、监控和自动化部署,一直没有一个清晰的思路。这本书给我带来的最大价值在于,它将Docker的生态系统描绘得非常完整,并且指出了各种工具之间的联系和配合方式。我特别喜欢它对Docker Hub和Registry的讲解,以及如何构建私有镜像仓库,这对于我们在企业内部进行统一镜像管理,提供了非常有效的解决方案。而且,书中关于Docker监控和日志收集的部分,也给了我很多新的思路。如何高效地收集、聚合和分析Docker容器的日志,以及如何进行容器的性能监控,这些都是我们在生产环境中经常会遇到的难题。这本书不仅仅是教授技术,更是提供了一种解决问题的思维方式,让我能够更全面地思考Docker在整个DevOps流程中的价值。

评分

作为一名有几年开发经验的工程师,《Docker实战》这本书给了我很多启发。我之前接触Docker,更多的是把它当做一个“黑盒”,能运行起来就好。但是这本书让我开始思考“为什么”。比如,它在介绍如何构建一个高效的Dockerfile时,不仅仅是给出一堆命令,还深入分析了镜像分层、缓存机制,以及如何通过多阶段构建来减小最终镜像的大小。这让我意识到,理解Docker的底层原理,对于写出更健壮、更优化的Dockerfile至关重要。还有一个让我印象深刻的部分是,书中讨论了如何利用Docker来模拟复杂的生产环境,包括数据库、消息队列、缓存服务等,并通过Docker Compose进行统一管理。这对于我们进行本地开发、测试和CI/CD流程的搭建,简直是神器。以前我们经常为了搭建一个完整的测试环境而头疼,现在有了这本书的指导,感觉效率提升了一个量级。这本书真正地做到了“实战”,让我觉得学到的知识都能立刻应用到工作中,解决实际问题。

评分

说实话,我拿到《Docker实战》的时候,并没有抱太大的期望,因为市面上关于Docker的书籍真的不少,但很多都感觉不够接地气。这本书给我带来的惊喜是巨大的。它从一个非常实用的角度切入,直接切中了我在日常开发和部署中遇到的痛点。我最喜欢的是它对Docker网络模式的讲解,清晰地阐述了host、bridge、none等模式的应用场景和优劣,以及如何通过自定义网络来解决服务发现和通信的问题。这部分内容,我之前在网上搜集了很多资料,但总觉得零散,而且容易混淆,而这本书用非常系统的方式,配以生动的图示和代码示例,让我茅塞顿开。另外,关于Docker Swarm和Kubernetes的初步介绍,虽然篇幅不长,但却给我指明了未来深入学习的方向。它让我明白,Docker不仅仅是一个独立的容器化工具,更是构建更复杂、更强大应用架构的基础。总的来说,这本书就像一个经验丰富的引路人,把我从Docker的迷雾中带了出来,让我能够更清晰地规划自己的学习路径和实践方向。

评分

这本《Docker实战》我拿到手的时候,说实话,有点小兴奋。我一直对容器化技术很感兴趣,也知道Docker是这个领域的翘楚,但总觉得理论知识学了不少,实操起来总有点不得要领。拿到书后,我立刻翻阅起来。最吸引我的地方在于,它不是那种枯燥的理论堆砌,而是用一种非常贴近实际应用场景的方式来展开。书里大量的例子,从最基础的安装配置,到构建自己的镜像,再到部署和管理应用,都讲得非常细致。我尤其喜欢它在讲解过程中,会穿插一些“为什么这么做”的解释,而不是简单地给出命令。比如,当它介绍如何优化Dockerfile的时候,不仅仅是罗列一些优化技巧,还会深入分析为什么这些技巧能提升效率,或者避免哪些潜在的问题。这对于我这种想知其所以然的读者来说,简直太有帮助了。而且,书中的代码示例都非常清晰,可以直接复制粘贴到自己的环境中进行尝试,这种边学边练的模式,让学习过程充满了成就感。我感觉通过这本书,我真的能把Docker从一个概念变成一个可以熟练运用的工具。

评分

我最近刚刚啃完《Docker实战》,总体感受就是——“太值了”!在读这本书之前,我对Docker的理解可能还停留在“它能打包应用”的层面,很多时候在实际工作中遇到问题,就像大海捞针一样找不到方向。这本书给我打开了一个全新的视角。它不仅仅是教你如何使用Docker命令,更重要的是,它教会了我如何“思考”Docker。比如,在讲到Docker Compose的时候,它不仅仅是演示了如何编排多个服务,还深入探讨了服务之间的依赖关系、网络配置、以及如何实现高可用性的初步思路。我印象最深刻的是,有一章详细讲解了如何进行Docker镜像的安全加固,包括如何使用最小化的基础镜像、移除不必要的工具、以及对暴露端口的控制等等,这些都是在实际生产环境中非常关键的点,但往往容易被忽略。书中对这些细节的关注,让我觉得作者是真的有丰富的实战经验,并且愿意把这些宝贵的经验毫无保留地分享出来。读完后,我感觉自己在部署和管理微服务应用时,信心大增,很多以前觉得棘手的问题,现在都有了清晰的解决方案。

评分

配送速度快,超级快,商品给力,十分十分的满意物流和商品。

评分

此用户未填写评价内容

评分

书不错,大家都说好,推荐哦。

评分

故事很精彩,所有运维人都应该看看,受益匪浅。

评分

买给公司的,值得读

评分

本书作者仅仅是个硕士生,按说能写出这样一本书已经相当不错了,但我觉得作为一本技术书籍,还存在以下缺陷:1、用词不够客观,多用“颠覆性”“变革”来形容某项技术,用”强大“、”珍贵“来形容团队、社区和开发者,还形容VMware对Nicira的收购是“给业界打了一剂强心针”。虽然这些描述不是不能不用,但本书实在太多了,比比皆是。作为一本技术书籍,这样做难免有失偏驳。

评分

应该不错,还没有看

评分

我为什么喜欢在京东买东西,因为今天买明天就可以送到。我为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以我统一用段话作为评价内容,省时省力,还能得京东豆。总而言之、言而总之,在京东买东西又好又快!

评分

好的东西不错的还行就

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有