推荐给您最好的一本Docker书

Docker/容器
433
0
0
2022-03-31
标签   Docker

今天上午摘选了一篇关于Docker的文章,小编感觉有必要给大家推荐一下这本书。《深入浅出Docker》,在bookauthority中最好的Docker书里排名第一,还有什么理由不选它。

推荐给您最好的一本Docker书

《深入浅出Docker》在豆瓣评分8.0。

推荐给您最好的一本Docker书

引用豆瓣评论:
对于我这个纯小白来说,这本书无疑是我的技术导师,由浅入深,步步为营!书中例子大部分都可以运行,也经常上网找办法,比如配置加速镜像,这书中是不讲的,还有配置swarm集群时,我用了virtualbox和docker machine来创建本地多虚机环境(电脑比较水),配置ucp 客户端连接docker daemon的时候,我用本机节点作为服务端,docker machine虚机作为客户端等等,即使作者讲的很明白,但真动手的话麻烦还是挺多的。书中有几处明显错误,好在不难猜正确的是什么,单就翻译质量来说,绝对杠杠的!阅读流畅无压力!自己的网络是弱项 学习Docker EE时有些吃力,好在自己坚持下来了,再次感谢有这么一本书把我引上docker之路,让我有段快乐的学习时光,学习让我自信,学习让我充实。 (收起)

Docker是什么

要理解Docker是什么,从一个比喻开始会比技术性解释来得简单,而且这个Docker的比喻非常有说服力。Docker原本是指在船只停靠港口之后将商品移进或移出的工人。箱子和物品的大小和形状各异,而有经验的码头工人能以合算的方式手工将商品装入船只,因而他们倍受青睐(见图1-2)。雇人搬东西并不便宜,但除此之外别无选择。

对在软件行业工作的人来说,这听起来应该很熟悉。大量时间和精力被花在将奇形怪状的软件放置到装满了其他奇形怪状软件、大小各异的船只上,以便将其卖给其他地方的用户或商业机构。

图1-3展示了使用Docker概念时如何能节省时间和金钱。

推荐给您最好的一本Docker书

图1-2 标准化集装箱前后的航运对比

在Docker出现之前,部署软件到不同环境所需的工作量巨大。即使不是采用手工运行脚本的方式在不同机器上进行软件配备(还是有很多人这么做),用户也不得不全力应付那些配置管理工具,它们掌管着渴求资源且快速变化的环境的状态。即便将这些工作封装到虚拟机中,还是需要花费大量时间来部署这些虚拟机、等待它们启动并管理它们所产生的额外的资源开销。

使用Docker,配置工作从资源管理中分离了出来,而部署工作则是微不足道的:运行docker run,环境的镜像会被拉取下来并准备运行,所消耗的资源更少并且是内含的,因此不会干扰其他环境。

读者无须担心容器是将被分发到Red Hat机器、Ubuntu机器还是CentOS虚拟机镜像中,只要上面有Docker,就没有问题。

推荐给您最好的一本Docker书

图1-3 使用Docker前后软件交付的对比

Docker有什么好处

几个重要的实际问题出现了:为什么要使用Docker,Docker用在什么地方?针对“为什么”的简要答案是:只需要一点点付出,Docker就能快速为企业节省大量金钱。部分方法(肯定不是所有的)将在随后的几节中讨论。我们已经在实际工作环境中切身体会到所有这些益处。

1.替代虚拟机(VM)

Docker可以在很多情况下替代虚拟机。如果用户只关心应用程序,而不是操作系统,可以用Docker替代虚拟机,并将操作系统交给其他人去考虑。Docker不仅启动速度比虚拟机快,迁移时也更为轻量,同时得益于它的分层文件系统,与其他人分享变更时更简单、更快捷。而且,它牢牢地扎根在命令行中,非常适合脚本化。

2.软件原型

如果想快速体验软件,同时避免干扰目前的设置或配备一个虚拟机的麻烦,Docker可以在几毫秒内提供一个沙箱环境。在亲身体验之前,很难感受到这种解放的效果。

3.打包软件

因为对Linux用户而言,Docker镜像实际上没有依赖,所以非常适合用于打包软件。用户可以构建镜像,并确保它可以运行在任何现代Linux机器上——就像Java一样,但不需要JVM。

4.让微服务架构成为可能

Docker 有助于将一个复杂系统分解成一系列可组合的部分,这让用户可以用更离散的方式来思考其服务。用户可以在不影响全局的前提下重组软件使其各部分更易于管理和可插拔。

5.网络建模

由于可以在一台机器上启动数百个(甚至数千个)隔离的容器,因此对网络进行建模轻而易举。这对于现实世界场景的测试非常有用,而且所费无几。

6.离线时启用全栈生产力

因为可以将系统的所有部分捆绑在Docker容器中,所以用户可以将其编排运行在笔记本电脑中移动办公,即便在离线时也没问题。

7.降低调试支出

不同团队之间关于软件交付的复杂谈判在业内司空见惯。我们亲身经历过不计其数的这类讨论:失效的库、有问题的依赖、更新被错误实施或是执行顺序有误,甚至可能根本没执行以及无法重现的错误等。估计读者也遇到过。Docker让用户可以清晰地说明(即便是脚本的形式)在一个属性已知的系统上调试问题的步骤,错误和环境重现变得更简单,而且通常与所提供的宿主机环境是分离的。

8.文档化软件依赖及接触点

通过使用结构化方式构建镜像,为迁移到不同环境做好准备,Docker 强制用户从一个基本出发点开始明确地记录软件依赖。即使用户不打算在所有地方都使用Docker,这种对文档记录的需要也有助于在其他地方安装软件。

9.启用持续交付

持续交付(continuous delivery,CD)是一个基于流水线的软件交付范型,该流水线通过一个自动化(或半自动化)流程在每次变动时重新构建系统然后交付到生产环境中。

因为用户可以更准确地控制构建环境的状态,Docker 构建比传统软件构建方法更具有可重现性和可复制性。使持续交付的实现变得更容易。通过实现一个以Docker为中心的可重现的构建过程,标准的持续交付技术,如蓝/绿部署(blue/green deployment,在生产环境中维护“生产”和“最新”部署)和凤凰部署(phoenix deployment,每次发布时都重新构建整个系统)变得很简单。

现在,读者对Docker如何能够提供帮助有了一定了解。在进入一个真实示例之前,让我们来了解一下几个核心概念。

为什么要阅读本书,为什么要关注Docker

如今Docker无处不在,这是不争的事实。开发人员都很喜欢它,运维工程师也需要它。他们都需要深入了解如何在关键业务环境中构建和维护符合生产级别要求的容器化应用,本书将帮助读者掌握它。

推荐给您最好的一本Docker书

Docker仅能供开发人员所用吗

对于认为Docker是开发人员专属工具的人来说,恐怕要准备好颠覆自己的认知了。

容器化应用需要有地方运行,也需要有人来管理。如果认为只是开发人员来管理它,那就大错特错了,事实上运维需要构建和运行高性能、生产级别的Docker基础架构。对于专注于运维工作却尚未掌握Docker的朋友来说,日子恐怕不太好过。不过不必焦虑,本书将帮你掌握Docker。

详细目录

第 一部分 Docker概览

第 1章 容器发展之路 2

1.1 落后的旧时代 2

1.2 你好,VMware! 2

1.3 虚拟机的不足 3

1.4 你好,容器! 3

1.5 Linux容器 3

1.6 你好,Docker! 4

1.7 Windows容器 4

1.8 Windows容器vs Linux容器 4

1.9 Mac容器现状 5

1.10 Kubernetes 5

1.11 本章小结 6

第 2章 走进Docker 7

2.1 Docker—简介 7

2.2 Docker公司 7

2.3 Docker运行时与编排引擎 8

2.4 Docker开源项目(Moby) 9

2.5 容器生态 10

2.6 开放容器计划 11

2.7 本章小结 12

第3章 Docker安装 13

3.1 Windows版Docker(DfW) 13

3.2 Mac版Docker(DfM) 17

3.3 在Linux上安装Docker 19

3.4 在Windows Server 2016上安装Docker 21

3.5 Docker引擎(Engine)升级 22

3.5.1 在Ubuntu 16.04上升级Docker CE 23

3.5.2 在Windows Server 2016上升级Docker EE 24

3.6 Docker存储驱动的选择 25

3.6.1 Device Mapper配置 26

3.6.2 让Docker自动设置direct-lvm 26

3.6.3 手动配置Device Mapper的direct-lvm 28

3.7 本章小结 28

第4章 纵观Docker 29

4.1 运维视角 29

4.1.1 镜像 30

4.1.2 容器 31

4.1.3 连接到运行中的容器 34

4.2 开发视角 35

4.3 本章小结 38

第二部分 Docker技术

第5章 Docker引擎 40

5.1 Docker引擎—简介 40

5.2 Docker引擎—详解 41

5.2.1 摆脱LXC 41

5.2.2 摒弃大而全的Docker daemon 42

5.2.3 开放容器计划(OCI)的影响 43

5.2.4 runc 43

5.2.5 containerd 43

5.2.6 启动一个新的容器(示例) 44

5.2.7 该模型的显著优势 45

5.2.8 shim 45

5.2.9 在Linux中的实现 46

5.2.10 daemon的作用 46

5.3 本章小结 46

第6章 Docker镜像 48

6.1 Docker镜像—简介 48

6.2 Docker镜像—详解 48

6.2.1 镜像和容器 49

6.2.2 镜像通常比较小 49

6.2.3 拉取镜像 49

6.2.4 镜像命名 51

6.2.5 镜像仓库服务 51

6.2.6 镜像命名和标签 52

6.2.7 为镜像打多个标签 54

6.2.8 过滤docker image ls的输出内容 55

6.2.9 通过CLI方式搜索Docker Hub 56

6.2.10 镜像和分层 57

6.2.11 共享镜像层 60

6.2.12 根据摘要拉取镜像 61

6.2.13 镜像散列值(摘要) 63

6.2.14 多层架构的镜像 63

6.2.15 删除镜像 65

6.3 镜像—命令 67

6.4 本章小结 67

第7章 Docker容器 68

7.1 Docker容器—简介 68

7.2 Docker容器—详解 69

7.2.1 容器vs虚拟机 69

7.2.2 虚拟机的额外开销 71

7.2.3 运行的容器 71

7.2.4 检查Docker daemon 71

7.2.5 启动一个简单容器 72

7.2.6 容器进程 74

7.2.7 容器生命周期 75

7.2.8 优雅地停止容器 78

7.2.9 利用重启策略进行容器的自我修复 78

7.2.10 Web服务器示例 80

7.2.11 查看容器详情 82

7.2.12 快速清理 82

7.3 容器—命令 83

7.4 本章小结 84

第8章 应用的容器化 85

8.1 应用的容器化—简介 85

8.2 应用的容器化—详解 86

8.2.1 单体应用容器化 86

8.2.2 生产环境中的多阶段构建 95

8.2.3 最佳实践 98

8.3 应用的容器化—命令 100

8.4 本章小结 101

第9章 使用Docker Compose部署应用 102

9.1 使用Docker Compose部署应用—简介 102

9.2 使用Docker Compose部署应用—详解 103

9.2.1 Docker Compose的背景 103

9.2.2 安装Docker Compose 103

9.2.3 Compose文件 105

9.2.4 使用Docker Compose部署应用 107

9.2.5 使用Docker Compose管理应用 110

9.3 使用Docker Compose部署应用—命令 115

9.4 本章小结 116

第 10章 Docker Swarm 117

10.1 Docker Swarm—简介 117

10.2 Docker Swarm—详解 118

10.2.1 Swarm的初步介绍 118

10.2.2 搭建安全Swarm集群 119

10.2.3 Swarm服务 125

10.2.4 故障排除 133

10.3 Docker Swarm—命令 134

10.4 本章小结 135

第 11章 Docker网络 136

11.1 Docker网络—简介 136

11.2 Docker网络—详解 137

11.2.1 基础理论 137

11.2.2 单机桥接网络 140

11.2.3 多机覆盖网络 146

11.2.4 接入现有网络 146

11.2.5 服务发现 152

11.2.6 Ingress网络 153

11.3 Docker网络—命令 156

11.4 本章小结 156

第 12章 Docker覆盖网络 157

12.1 Docker覆盖网络—简介 157

12.2 Docker覆盖网络—详解 157

12.2.1 在Swarm模式下构建并测试Docker覆盖网络 158

12.2.2 工作原理 164

12.3 Docker覆盖网络—命令 168

12.4 本章小结 168

第 13章 卷与持久化数据 169

13.1 卷与持久化数据—简介 169

13.2 卷与持久化数据—详解 169

13.2.1 容器与非持久数据 170

13.2.2 容器与持久化数据 170

13.2.3 在集群节点间共享存储 175

13.3 卷与持久化数据—命令 176

13.4 本章小结 176

第 14章 使用Docker Stack部署应用 177

14.1 使用Docker Stack部署应用—简介 177

14.2 使用Docker Stack部署应用—详解 178

14.2.1 简单应用 178

14.2.2 深入分析Stack文件 180

14.2.3 部署应用 186

14.2.4 管理应用 191

14.3 使用Docker Stack部署应用—命令 193

14.4 本章小结 194

第 15章 Docker安全 195

15.1 Docker安全—简介 195

15.2 Docker安全—详解 196

15.2.1 Linux安全技术 197

15.2.2 Docker平台安全技术 201

15.3 本章小结 212

第 16章 企业版工具 213

16.1 企业版工具—简介 213

16.2 企业版工具—详解 214

16.2.1 Docker EE引擎 214

16.2.2 Docker通用控制平面(UCP) 216

16.2.3 Docker可信镜像仓库服务(DTR) 227

16.3 本章小结 233

第 17章 企业级特性 234

17.1 企业级特性—简介 234

17.2 企业级特性—详解 234

17.2.1 基于角色的权限控制(RBAC) 235

17.2.2 集成活动目录 239

17.2.3 Docker内容信任机制(DCT) 241

17.2.4 配置Docker可信镜像仓库服务(DTR) 243

17.2.5 使用Docker可信镜像仓库服务 244

17.2.6 提升镜像 247

17.2.7 HTTP路由网格(HRM) 250

17.3 本章小结 253

附录A 安全客户端与daemon的通信 255

附录B DCA考试 265

附录C 延伸 270