共计 9313 个字符,预计需要花费 24 分钟才能阅读完成。
网站
更多书籍点击进入 >> <font color=blue>CiCi 岛 </font>
下载
<font color=red>电子版仅供预览及学习交流使用,下载后请 24 小时内删除,支持正版,喜欢的请购买正版书籍</font>
- <font color=blue> 电子书下载 </font>(皮皮云盘 - 点击“普通下载”)
- <font color=blue> 购买正版 </font>
封页
编辑推荐
适合不同开发者的 Docker 工具书! 内容全面:基础命令、进阶用法悉数囊括,知识点全覆盖。活学活用:大量实践案例展示,指导上手使用,深化理解。知识新鲜:以 * 文档、材料为基础,跟进 Docker 演进的步伐。
内容简介
作为引领近几年容器虚拟化领域的技术,Docker 的发展方兴未艾。但由于其出现不过数年,关于它的资料,特别是中文资料仍然相对匮乏,导致国内许多开发者对其感到陌生。本书正是以布道 Docker 为理念,由浅入深地从阐述 Docker 的基本概念、讲解常规使用方法、进行操作实践的演示、展示提高和进阶用法、剖析内部原理和底层架构等多个方面,全方面的展现 Docker 所具有的魅力。本书由概念及至实践,从不同方面向读者展现了 Docker,实用性非常强,既可以作为一本学习 Docker 的入门教材,也能作为进行 Docker 操作实践的说明书,甚至可以作为提高和进阶的知识宝库。不论是对 Docker 认知程度不同,有着不同知识储备的人,还是处于程序软件研发部署流程中的开发人员、测试人员或运维人员,本书都有着很强的可阅读性。
作者简介
熊昌隆,资深架构师,Web 全栈开发者,知名博主,Beaver 框架作者,开源小组 Funcuter 的发起者,致力于新兴技术的研究和推广。早年参与智慧路由的研究,多项研究成果影响了家用路由器的发展。设计实现的 Beaver 框架,已经应用于千万级系统的底层程序架构中。发起组建的 Funcuter 开源小组,旨在聚集国内的优秀开源项目和开发者,目前已经拥有多个开源项目。近年来一直致力于前沿技术的研究和推广,希望让更多的开发者更轻松的接触、了解 * 兴科技成果,并应用于开发实践中。
目 录
目 录
第一部分 基础篇
第 1 章 初识 Docker 1
1.1 虚拟化 2
1.1.1 虚拟化技术 2
1.1.2 虚拟化的分类 4
1.2 容器技术与 Docker 6
1.2.1 容器技术 6
1.2.2 Docker 简介 8
1.2.3 改变世界的发明 10
1.3 Docker 的安装 10
1.3.1 在 Ubuntu 中安装 Docker 11
1.3.2 在 CentOS 中安装 Docker 12
1.3.3 在 Windows 中安装 Docker 13
1.3.4 在 Mac OS 中安装 Docker 15
1.3.5 在其他系统中安装 Docker 16
1.4 Docker 的优势 17
1.4.1 革命性的虚拟化方案 17
1.4.2 高效的容器技术 18
1.4.3 社区的力量 19
1.5 Docker 的应用场景 20
1.5.1 超短时间部署运行 20
1.5.2 节约迁移时间 21
1.6 本章小结 21
第 2 章 镜像与仓库 22
2.1 镜像的概念 22
2.1.1 联合文件系统 22
2.1.2 Docker 中的镜像 23
2.1.3 镜像的分层结构 24
2.1.4 镜像的写时复制 25
2.2 使用和管理镜像 26
2.2.1 获取镜像 26
2.2.2 列出镜像 28
2.2.3 获得镜像的详细信息 28
2.2.4 删除镜像 31
2.2.5 镜像的迁移 32
2.3 Docker Hub 33
2.3.1 镜像仓库 33
2.3.2 Docker Hub 34
2.3.3 注册 Docker Hub 账号 35
2.3.4 搜索镜像 36
2.3.5 共享自动构建镜像 38
2.4 搭建私有仓库 40
2.4.1 镜像分发服务 40
2.4.2 Docker Registry HTTP API 41
2.4.3 部署私有仓库 42
2.5 本章小结 44
第 3 章 管理和使用容器 45
3.1 管理容器 45
3.1.1 创建容器 45
3.1.2 容器的启动过程 48
3.1.3 列出容器 49
3.1.4 容器的命名 51
3.1.5 启动和停止 52
3.1.6 暂停和恢复 53
3.1.7 重启容器 54
3.1.8 删除容器 55
3.2 连接到容器 55
3.2.1 查看进程信息 56
3.2.2 查看容器信息 56
3.2.3 容器日志 62
3.2.4 衔接到容器 63
3.2.5 在容器中执行命令 64
3.3 容器的保存与迁移 65
3.3.1 提交容器更改 65
3.3.2 容器的导入 / 导出 68
3.4 本章小结 70
第 4 章 数据卷与网络 71
4.1 数据卷 71
4.1.1 关于数据卷 71
4.1.2 数据卷的特点 72
4.1.3 创建数据卷 73
4.1.4 挂载数据卷 74
4.1.5 删除数据卷 76
4.2 数据卷容器 77
4.2.1 关于数据卷容器 77
4.2.2 创建数据卷容器 78
4.2.3 连接数据卷容器 79
4.2.4 数据卷的迁移 80
4.3 网络基础 82
4.3.1 网络简介 82
4.3.2 查看网络配置 83
4.4 网络访问 85
4.4.1 宿主机端口映射 85
4.4.2 容器连接 87
4.5 本章小结 90
第 5 章 制作镜像 91
5.1 了解 Dockerfile 91
5.1.1 Dockerfile 简介 92
5.1.2 使用 Dockerfile 创建镜像 94
5.2 基础指令 96
5.2.1 FROM 97
5.2.2 MAINTAINER 97
5.3 控制指令 97
5.3.1 RUN 97
5.3.2 WORKDIR 99
5.3.3 ONBUILD 99
5.4 引入指令 100
5.4.1 ADD 100
5.4.2 COPY 102
5.5 执行指令 102
5.5.1 CMD 102
5.5.2 ENTRYPOINT 104
5.6 配置指令 107
5.6.1 EXPOSE 108
5.6.2 ENV 108
5.6.3 LABEL 109
5.6.4 USER 110
5.6.5 ARG 111
5.6.6 STOPSIGNAL 112
5.6.7 SHELL 113
5.7 特殊用法 113
5.7.1 环境变量 113
5.7.2 指令解析 114
5.7.3 忽略文件 116
5.8 本章小结 117
第二部分 实践篇
第 6 章 SSH 服务 118
6.1 在 Docker 中使用 SSH 118
6.1.1 SSH 简介 119
6.1.2 SSH 使用方法简介 119
6.1.3 数据卷管理容器 121
6.1.4 使用 SSH 服务容器 122
6.2 构建 SSH 服务镜像 124
6.2.1 构建方式比较 124
6.2.2 通过提交构建 125
6.2.3 使用 Dockerfile 构建 127
6.3 本章小结 131
第 7 章 Web 服务器 132
7.1 Web 服务简介 132
7.1.1 万维网与网站 132
7.1.2 Web 服务 133
7.1.3 Web 服务程序 135
7.2 Apache 135
7.2.1 Apache 简介 135
7.2.2 安装 Apache 136
7.2.3 构建 Apache 镜像 139
7.2.4 测试 Apache 容器 142
7.3 Nginx 143
7.3.1 关于 Nginx 143
7.3.2 安装 Nginx 144
7.3.3 构建 Nginx 镜像 146
7.3.4 测试 Nginx 镜像 148
7.4 Tomcat 148
7.4.1 Tomcat 简介 149
7.4.2 安装 Tomcat 149
7.4.3 构建 Tomcat 镜像 152
7.5 本章小结 153
第 8 章 数据库程序 155
8.1 MySQL 155
8.1.1 MySQL 简介 156
8.1.2 安装 MySQL 156
8.1.3 构建 MySQL 镜像 162
8.1.4 测试 MySQL 容器 164
8.2 MongoDB 166
8.2.1 MongoDB 简介 166
8.2.2 安装 MongoDB 167
8.2.3 构建 MongoDB 镜像 171
8.2.4 测试 MongoDB 容器 173
8.3 本章小结 176
第 9 章 缓存工具 177
9.1 Memcached 178
9.1.1 Memcached 简介 178
9.1.2 安装 Memcached 179
9.1.3 构建 Memcached 镜像 184
9.1.4 测试 Memcached 容器 186
9.2 Redis 188
9.2.1 Redis 简介 188
9.2.2 安装 Redis 188
9.2.3 构建 Redis 镜像 193
9.2.4 测试 Redis 容器 195
9.3 本章小结 196
第 10 章 动态处理程序 197
10.1 Java 197
10.1.1 Java 简介 198
10.1.2 安装 Java 198
10.1.3 构建 Java 镜像 204
10.1.4 测试 Java 容器 206
10.2 PHP 207
10.2.1 PHP 简介 207
10.2.2 安装 PHP 208
10.2.3 构建 PHP 镜像 214
10.2.4 测试 PHP 容器 216
10.3 Python 217
10.3.1 Python 简介 217
10.3.2 安装 Python 218
10.3.3 构建 Python 镜像 223
10.3.4 测试 Python 容器 224
10.4 Node.js 225
10.4.1 Node.js 简介 225
10.4.2 安装 Node.js 226
10.4.3 构建 Node.js 镜像 228
10.4.4 测试 Node.js 容器 230
10.5 本章小结 231
第 11 章 综合演练 232
11.1 演练目标 232
11.1.1 目标概述 232
11.1.2 代码编写 233
11.2 环境搭建 237
11.2.1 准备镜像 237
11.2.2 程序配置 239
11.3 项目运行 248
11.3.1 启动容器 248
11.3.2 测试项目 249
11.4 本章小结 253
第三部分 提高篇
第 12 章 网络进阶 254
12.1 网络实现 254
12.1.1 容器网络基础 255
12.1.2 网络模型 257
12.2 Docker 中的网络 258
12.2.1 默认网络 258
12.2.2 自定义网络 261
12.2.3 容器与外部通信 262
12.2.4 容器间通信 264
12.3 网络实践 265
12.3.1 管理容器网络 265
12.3.2 容器连接网络 267
12.3.3 配置 docker0 网桥 269
12.3.4 自定义网桥 271
12.3.5 配置 DNS 271
12.3.6 使用 IPv6 273
12.4 本章小结 274
第 13 章 安全加固 275
13.1 深入理解 Docker 安全 275
13.1.1 命名空间隔离 276
13.1.2 资源控制组 277
13.1.3 内核能力机制 277
13.2 资源使用限制 278
13.2.1 通过控制组限制 278
13.2.2 通过 ulimit 限制 280
13.2.3 网络访问限制 280
13.3 校验与监控 281
13.3.1 镜像签名 281
13.3.2 运行状态监控 283
13.4 联级防护 284
13.4.1 组合虚拟化 284
13.4.2 文件系统安全 284
13.5 内核安全技术 285
13.5.1 Capability 286
13.5.2 SELinux 287
13.5.3 AppArmor 288
13.6 本章小结 289
第 14 章 Docker API 290
14.1 关于 Docker API 290
14.1.1 通用操作接口 290
14.1.2 关于 RESTful 291
14.1.3 Docker API 的优势 292
14.1.4 Docker API 的分类 293
14.2 使用 Docker Remote API 293
14.2.1 关于 Docker Remote API 294
14.2.2 Docker Remote API 的版本 299
14.2.3 通过 Remote API 列出容器 300
14.2.4 通过 Remote API 列出镜像 302
14.3 使用 Docker Registry API 303
14.3.1 关于 Docker Registry API 304
14.3.2 Docker Registry API 的主要功能 304
14.3.3 Docker Registry API 的版本 305
14.3.4 通过 Registry API 拉取镜像 306
14.3.5 通过 Registry API 推送镜像 307
14.4 本章小结 309
第 15 章 管理工具 310
15.1 Docker Compose 310
15.1.1 Docker Compose 简介 311
15.1.2 安装 Docker Compose 313
15.1.3 Docker Compose 配置文件 314
15.1.4 常用的 Docker Compose 命令 315
15.2 Docker Machine 318
15.2.1 Docker Machine 简介 318
15.2.2 安装 Docker Machine 320
15.2.3 Docker Machine 常见命令 321
15.3 Docker Swarm 322
15.3.1 Docker Swarm 简介 322
15.3.2 Docker Swarm 结构 323
15.3.3 使用 Docker Swarm 323
15.3.4 Docker Swarm 常见命令 325
15.4 本章小结 327
第 16 章 Docker 的技术架构 328
16.1 命名空间 328
16.1.1 关于 Linux 命名空间 328
16.1.2 命名空间的系统调用 329
16.1.3 命名空间的分类 330
16.2 控制组 332
16.2.1 关于 Linux 控制组 332
16.2.2 Cgroups 的组成 333
16.2.3 容器与控制组 334
16.3 联合文件系统 336
16.3.1 关于 UFS 336
16.3.2 Docker 中的 UFS 337
16.4 Docker Engine 架构 338
16.4.1 Docker Engine 的组成结构 338
16.4.2 Docker Daemon 339
16.4.3 Docker CLI 342
16.5 本章小结 344
前 言
前 言
在快速发展的互联网领域,总在涌现引领潮流的新技术,最近几年,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 使用方法的展示,并提供了专门的章节演示 Docker 的实践之道。通过这些操作示例的引导,避免了读者进行纸上谈兵式的阅读,也使得章节之间的知识可以由这些演示串联起来,能够减少知识脱节的现象发生。而对于理论知识的说明,本书绝不是生搬硬套地进行教条式的列举,也没有以堆砌专有词汇的方式简单概括,而是通过通俗语言将晦涩的知识以生活化的方式展现出来,让读者,特别是 Docker 初学者更容易地理解 Docker。
跟进时代,采取最新资料编写
Docker 是一门新兴技术,也是一门快速发展的技术,仅仅诞生数年就已经迭代了数十个版本。由于 Docker 在迭代的过程中不断地优化、完善、补充,所以不同版本之间所具有的功能和使用方法都存在很大的区别,所以学习 Docker 一定要使用新鲜的一手资料。本书在编写的过程中,收集和参考了大量最新的材料,特别是从 Docker 官方文档中提取了很多 Docker 最新的特性和使用方法,也从 Docker 的技术说明和源代码中总结了 Docker 的架构逻辑。由于本书是在对这些崭新的材料的收集汇总以及精心梳理的基础上完成的,所以本书可以为大家学习 Docker 提供强有力的支持。
本书的内容及体系结构
本书主要分为三部分,分别从基础、实践和提高的角度向读者介绍 Docker 的知识概念和使用方法。
第一部分为基础篇,包含了第 1~5 章的内容。在基础篇中,我们会讲解了 Docker 的历史和基本概念,介绍最常见且最基础的 Docker 使用方法。
第 1 章 初始 Docker
本章从虚拟化、容器技术的发展历史与现状出发,逐步引入和展示 Docker 这项全新的虚拟化解决方案。除了向读者介绍 Docker 的组成结构以及发展历史,我们还将比较 Docker 与以往的部署及虚拟化方案的不同,分析使用 Docker 的优势所在,并介绍适合使用 Docker 的常见场景。另外,我们还将教会大家如何在常用的几种操作系统中安装 Docker。
第 2 章 镜像与仓库
本章由 Docker 镜像的概念出发,讲解 Docker 镜像的结构特点与组成形式,比较 Docker 镜像与其他虚拟化方案中镜像的异同,同时将常用的 Docker 镜像管理方法介绍给读者。除此之外,我们还将介绍如何使用 Docker 特有的镜像仓库存储、共享和迁移镜像,以及 Docker 官方所提供的 Docker Hub 镜像仓库的使用方法。
第 3 章 管理和使用容器
本章主要介绍了 Docker 的核心,也就是容器技术中容器的实现。本章将逐一谈及新增、运行、停止、删除等常用的容器操作方法,也将向读者展示如何查看容器的运行状态以及如何进行到容器中操作。另外,本章也会提及如何进行容器的迁移。
第 4 章 数据卷与网络
本章从容器的网络数据和文件数据的交换出发,引出和介绍了 Docker 提供的容器网络和数据卷这两个模块。在有关数据卷的部分,读者可以了解到数据卷的基本概念,以及如何创建或者从宿主机中挂载数据卷。在有关容器网络的部分,读者可以了解到容器网络的基本知识,以及如何让外部网络访问到容器或者实现容器间的网络通信。
第 5 章 制作镜像
本章主要介绍如何根据需要,通过编写 Dockerfile 构建 Docker 镜像。在展示了如何将程序打包到镜像中之后,我们还对 Dockerfile 的写法以及可能使用到的指令进行了全方位的讲解。
第二部分是实践篇,由第 6~11 章的内容组成。在实践篇中,我们将以基础篇中所学到的知识,分别对常见的服务器程序在 Docker 中的使用进行实践。
第 6 章 SSH 服务
本章主要展示了 SSH 服务在 Docker 容器中运行的方式,并介绍了 SSH 服务在 Docker 中所扮演的角色,还带领读者进行了在 Docker 容器中搭建 SSH 服务,以及构建包含 SSH 服务的 Docker 镜像的实践。
第 7 章 Web 服务器
本章首先简单介绍了 Web 服务和能够提供 Web 服务的常见程序,也分别在 Docker 容器中搭建了 Apache、Nginx 和 Tomcat 这几个常见的 Web 服务程序,还将通过编写 Dockerfile 的方式将这几款 Web 服务程序封装成 Docker 镜像。
第 8 章 数据库程序
本章对目前最受欢迎的开源关系型数据库 MySQL 和非关系型数据库 MongoDB 做简单介绍,展示如何在 Docker 容器中使用它们,也会提及如何让这些数据库向外提供服务。我们还将把这几款数据库软件通过 Dockerfile 构建成镜像,方便在 Docker 中使用。
第 9 章 缓存工具
本章首先提及在服务器中使用缓存工具的意义,并介绍 Memcached 和 Redis 这两款常用作处理缓存的工具。在了解 Memcached 和 Redis 的使用之后,我们还会将它们部署到 Docker 容器之中,并通过搭建程序的实践,将这两款程序封装到 Docker 镜像里。
第 10 章 动态处理程序
本章主要介绍了 Java、PHP、Python 和 Node.js 这几款常用的处理 Web 请求的程序,并讲解了如何在 Docker 容器中安装或搭建这些程序。在了解了这些程序在容器中安装或搭建的过程之后,我们还将通过 Dockerfile 将这几款软件封装成独立的 Docker 镜像。
第 11 章 综合演练
本章在之前所进行的实践的基础上,将实践过的 Web 服务程序、数据库程序、缓存工具和动态处理程序,通过运行它们的 Docker 容器进行组合,讲解如何通过 Docker 构建和运行一套完整的 Web 服务体系。
第三部分是提高篇,汇总在第 12~16 章的内容中。在提高篇中,我们主要针对一些 Docker 更深入的使用方法和概念、原理进行学习和探究。
第 12 章 网络进阶
本章在之前所介绍的 Docker 网络基础概念和使用方法的基础之上,进一步深入地介绍了 Docker 网络的实现方法,阐述 Docker 网络的底层架构以及容器网络模型的概念,对用于管理容器网络的命令,也做了专门介绍。另外,本章还向读者介绍了如何进行深度定制的 Docker 容器网络配置和控制。
第 13 章 安全加固
本章从 Docker 的底层隔离机制出发,阐述了隔离机制是如何保证容器中程序互不干扰的,并由此展开,谈到了控制容器使用资源的方式和原理。我们还介绍了如何通过内核的安全机制及相关安全防护程序,来控制程序权限以及防范可能发生的攻击与破坏。另外,我们还将展示常用于 Docker 的安全策略和防护方法。
第 14 章 Docker API
本章主要讲解 Docker 中最基础也最重要的与外界沟通的方式,即 Docker API。在对 Docker API 的实现方式与分类进行介绍之后,我们还将抽取最常用的用于管理 Docker 核心模块的 Docker Remote API,以及用于与远程镜像仓库镜像交互的 Docker Registry API 进行专门地讲解和示范。
第 15 章 管理工具
本章主要展示了 Docker Compose、Docker Machine、Docker S
本篇文章由一文多发平台 ArtiPub 自动发布