更多书籍点击进入>> CiCi岛php
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍html
适合不一样开发者的Docker工具书! 内容全面:基础命令、进阶用法悉数囊括,知识点全覆盖。 活学活用:大量实践案例展现,指导上手使用,深化理解。 知识新鲜:以*文档、材料为基础,跟进Docker演进的步伐。git
做为引领近几年容器虚拟化领域的技术,Docker的发展方兴未艾。但因为其出现不过数年,关于它的资料,特别是中文资料仍然相对匮乏,致使国内许多开发者对其感到陌生。本书正是以布道Docker为理念,由浅入深地从阐述Docker的基本概念、讲解常规使用方法、进行操做实践的演示、展现提升和进阶用法、剖析内部原理和底层架构等多个方面,全方面的展示Docker所具备的魅力。本书由概念及至实践,从不一样方面向读者展示了Docker,实用性很是强,既能够做为一本学习Docker的入门教材,也能做为进行Docker操做实践的说明书,甚至能够做为提升和进阶的知识宝库。不管是对Docker认知程度不一样,有着不一样知识储备的人,仍是处于程序软件研发部署流程中的开发人员、测试人员或运维人员,本书都有着很强的可阅读性。github
熊昌隆,资深架构师,Web全栈开发者,知名博主,Beaver框架做者,开源小组Funcuter的发起者,致力于新兴技术的研究和推广。早年参与智慧路由的研究,多项研究成果影响了家用路由器的发展。设计实现的Beaver框架,已经应用于千万级系统的底层程序架构中。发起组建的Funcuter开源小组,旨在汇集国内的优秀开源项目和开发者,目前已经拥有多个开源项目。近年来一直致力于前沿技术的研究和推广,但愿让更多的开发者更轻松的接触、了解*兴科技成果,并应用于开发实践中。docker
目 录
第一部分 基础篇
第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自动发布安全