乐趣区

每天5分钟玩转Docker容器技术

网站

更多书籍点击进入 >> <font color=blue>CiCi 岛 </font>

下载

<font color=red>电子版仅供预览及学习交流使用,下载后请 24 小时内删除,支持正版,喜欢的请购买正版书籍</font>

  • <font color=blue> 电子书下载 </font>(皮皮云盘 - 点击“普通下载”)
  • <font color=blue> 购买正版 </font>

封页

编辑推荐

容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行对 IT 从业者来说,掌握容器技术是市场的需要,也是提升自我价值的重要途径每一轮新技术的兴起,无论对公司还是个人既是机会也是挑战

内容简介

Docker 和容器技术是当下 火的 IT 技术,无论是互联网还是传统企业都在研究和实践如何用容器构建自己的 IT 基础设施。学习本书能够让读者少走弯路,系统地学习、掌握和实践 Docker 和容器技术。本书共分为三部分。部分介绍容器技术生态环境。第二部分是容器核心知识,包括架构、镜像、容器、网络和存储。第三部分是容器进阶知识,包括多主机管理、跨主机网络方案、监控、日志管理和数据管理。读者在学习的过程中,可以跟着教程进行操作,在实践中掌握 Docker 容器技术的核心技能。在之后的工作中,可以将本教程作为参考书,按需查找相关知识点。本书主要面向微服务软件开发人员,以及 IT 实施和运维工程师等相关人员,也适合高等院校和培训学校相关专业的师生教学参考。

作者简介

CloudMan,十多年 IT 从业经验,就职于国际知名 IT 企业,从事 IT 基础设施实施服务,项目涉及服务器、存储、网络、虚拟化、云技术等各个方面。CloudMan 对新技术长期保持浓厚的兴趣和学习热情,十几年来一直专注 IT 技术领域的钻研与实践。

目 录

<p> 目  录 </p>
<p> 第一篇  启 程 </p>
<p> 第 1 章  鸟瞰容器生态系统 3</p>
<p>1.1  容器生态系统 3</p>
<p>1.2  本教程覆盖的知识范围 10</p>
<p>1.3  准备实验环境 10</p>
<p>1.3.1 
环境选择 10</p>
<p>1.3.2 
安装 Docker 10</p>
<p>1.4  运行第一个容器 11</p>
<p>1.5  小结 12</p>
<p> 第二篇  容器技术 </p>
<p> 第 2 章  容器核心知识概述 15</p>
<p>2.1 
What ——
什么是容器 15</p>
<p>2.2 
Why ——
为什么需要容器 16</p>
<p>2.2.1 
容器解决的问题 16</p>
<p>2.2.2 
Docker 的特性 20</p>
<p>2.2.3 
容器的优势 20</p>
<p>2.3 
How ——
容器是如何工作的 21</p>
<p>2.4  小结 24</p>
<p> 第 3 章  Docker 镜像 26</p>
<p>3.1  镜像的内部结构 26</p>
<p>3.1.1 
hello-world ——
最小的镜像 26</p>
<p>3.1.2 
base 镜像 27</p>
<p>3.1.3 
镜像的分层结构 30</p>
<p>3.2  构建镜像 32</p>
<p>3.2.1 
docker commit 32</p>
<p>3.2.2 
Dockerfile 34</p>
<p>3.3 
RUN vs CMD vs ENTRYPOINT 42</p>
<p>3.3.1 
Shell 和 Exec 格式 42</p>
<p>3.3.2 
RUN 44</p>
<p>3.3.3 
CMD 44</p>
<p>3.3.4 
ENTRYPOINT 45</p>
<p>3.3.5 
最佳实践 46</p>
<p>3.4  分发镜像 46</p>
<p>3.4.1 
为镜像命名 46</p>
<p>3.4.2 
使用公共 Registry 49</p>
<p>3.4.3 
搭建本地 Registry 51</p>
<p>3.5  小结 52</p>
<p> 第 4 章  Docker 容器 55</p>
<p>4.1  运行容器 55</p>
<p>4.1.1 
让容器长期运行 56</p>
<p>4.1.2 
两种进入容器的方法 57</p>
<p>4.1.3 
运行容器的最佳实践 59</p>
<p>4.1.4 
容器运行小结 59</p>
<p>4.2 
stop/start/restart 容器 60</p>
<p>4.3 
pause / unpause 容器 61</p>
<p>4.4  删除容器 61</p>
<p>4.5 
State Machine 62</p>
<p>4.6  资源限制 65</p>
<p>4.6.1 
内存限额 65</p>
<p>4.6.2 
CPU 限额 66</p>
<p>4.6.3 
Block IO 带宽限额 68</p>
<p>4.7  实现容器的底层技术 69</p>
<p>4.7.1 
cgroup 70</p>
<p>4.7.2 
namespace 70</p>
<p>4.8  小结 72</p>
<p> 第 5 章  Docker 网络 74</p>
<p>5.1 
none 网络 74</p>
<p>5.2 
host 网络 75</p>
<p>5.3 
bridge 网络 76</p>
<p>5.4 
user-defined 网络 78</p>
<p>5.5  容器间通信 84</p>
<p>5.5.1 
IP 通信 84</p>
<p>5.5.2 
Docker DNS Server 85</p>
<p>5.5.3 
joined 容器 85</p>
<p>5.6  将容器与外部世界连接 87</p>
<p>5.6.1 
容器访问外部世界 87</p>
<p>5.6.2 
外部世界访问容器 90</p>
<p>5.7 小结 91</p>
<p> 第 6 章  Docker 存储 92</p>
<p>6.1 
storage driver 92</p>
<p>6.2 
Data Volume 94</p>
<p>6.2.1 
bind mount 94</p>
<p>6.2.2 
docker managed volume 96</p>
<p>6.3  数据共享 99</p>
<p>6.3.1 
容器与 host 共享数据 99</p>
<p>6.3.2 
容器之间共享数据 99</p>
<p>6.4 
volume container 100</p>
<p>6.5 
data-packed volume container 102</p>
<p>6.6 
Data Volume 生命周期管理 103</p>
<p>6.6.1 
备份 104</p>
<p>6.6.2 
恢复 104</p>
<p>6.6.3 
迁移 104</p>
<p>6.6.4 
销毁 104</p>
<p>6.7  小结 105</p>
<p> 第三篇  容器进阶知识 </p>
<p> 第 7 章  多主机管理 109</p>
<p>7.1  实验环境描述 110</p>
<p>7.2  安装 Docker
Machine 111</p>
<p>7.3  创建 Machine
112</p>
<p>7.4  管理 Machine 114</p>
<p> 第 8 章  容器网络 117</p>
<p>8.1 
libnetwork & CNM 117</p>
<p>8.2  overlay
119</p>
<p>8.2.1 
实验环境描述 120</p>
<p>8.2.2 
创建 overlay 网络 121</p>
<p>8.2.3 
在 overlay 中运行容器 122</p>
<p>8.2.4 
overlay 网络连通性 124</p>
<p>8.2.5 
overlay 网络隔离 126</p>
<p>8.2.6 
overlay IPAM 127</p>
<p>8.3 
macvlan 127</p>
<p>8.3.1 
准备实验环境 127</p>
<p>8.3.2 
创建 macvlan 网络 128</p>
<p>8.3.3 
macvlan 网络结构分析 130</p>
<p>8.3.4 
用 sub-interface 实现多 macvlan 网络 131</p>
<p>8.3.5 
macvlan 网络间的隔离和连通 132</p>
<p>8.4 
flannel 136</p>
<p>8.4.1 
实验环境描述 137</p>
<p>8.4.2 
安装配置 etcd 137</p>
<p>8.4.3 
build flannel 138</p>
<p>8.4.4 
将 flannel 网络的配置信息保存到 etcd 139</p>
<p>8.4.5 
启动 flannel 139</p>
<p>8.4.6 
配置 Docker 连接 flannel 141</p>
<p>8.4.7 
将容器连接到 flannel 网络 143</p>
<p>8.4.8 
flannel 网络连通性 144</p>
<p>8.4.9 
flannel 网络隔离 146</p>
<p>8.4.10 
flannel 与外网连通性 146</p>
<p>8.4.11 
host-gw backend 146</p>
<p>8.5 
weave 148</p>
<p>8.5.1 
实验环境描述 148</p>
<p>8.5.2 
安装部署 weave 149</p>
<p>8.5.3 
在 host1 中启动 weave 149</p>
<p>8.5.4 
在 host1 中启动容器 150</p>
<p>8.5.5 
在 host2 中启动 weave 并运行容器 153</p>
<p>8.5.6 
weave 网络连通性 154</p>
<p>8.5.7 
weave 网络隔离 155</p>
<p>8.5.8 
weave 与外网的连通性 156</p>
<p>8.5.9 
IPAM 158</p>
<p>8.6 
calico 158</p>
<p>8.6.1 
实验环境描述 159</p>
<p>8.6.2 
启动 etcd 159</p>
<p>8.6.3 
部署 calico 160</p>
<p>8.6.4 
创建 calico 网络 161</p>
<p>8.6.5 
在 calico 中运行容器 161</p>
<p>8.6.6 
calico 默认连通性 164</p>
<p>8.6.7 
calico policy 167</p>
<p>8.6.8 
calico IPAM 169</p>
<p>8.7  比较各种网络方案 170</p>
<p>8.7.1 
网络模型 171</p>
<p>8.7.2 
Distributed Store 171</p>
<p>8.7.3 
IPAM 171</p>
<p>8.7.4 
连通与隔离 172</p>
<p>8.7.5 
性能 172</p>
<p> 第 9 章  容器监控 173</p>
<p>9.1 
Docker 自带的监控子命令 173</p>
<p>9.1.1 
ps 173</p>
<p>9.1.2 
top 174</p>
<p>9.1.3 
stats 175</p>
<p>9.2 
sysdig 175</p>
<p>9.3 
Weave Scope 179</p>
<p>9.3.1 
安装 179</p>
<p>9.3.2 
容器监控 181</p>
<p>9.3.3 
监控 host 184</p>
<p>9.3.4 
多主机监控 186</p>
<p>9.4 
cAdvisor 189</p>
<p>9.4.1 
监控 Docker Host 189</p>
<p>9.4.2 
监控容器 191</p>
<p>9.5 
Prometheus 194</p>
<p>9.5.1 
架构 194</p>
<p>9.5.2 
多维数据模型 195</p>
<p>9.5.3 
实践 196</p>
<p>9.6  比较不同的监控工具 204</p>
<p>9.7  几点建议 205</p>
<p> 第 10 章  日志管理 207</p>
<p>10.1 
Docker logs 207</p>
<p>10.2 
Docker logging driver 209</p>
<p>10.3 
ELK 211</p>
<p>10.3.1 
日志处理流程 211</p>
<p>10.3.2 
安装 ELK 套件 212</p>
<p>10.3.3 
Filebeat 214</p>
<p>10.3.4 
管理日志 216</p>
<p>10.4 
Fluentd 220</p>
<p>10.4.1 
安装 Fluentd 221</p>
<p>10.4.2 
重新配置 Filebeat 221</p>
<p>10.4.3 
监控容器日志 221</p>
<p>10.5 
Graylog 222</p>
<p>10.5.1 
Graylog 架构 222</p>
<p>10.5.2 
部署 Graylog 223</p>
<p>10.5.3 
配置 Graylog 225</p>
<p>10.5.4 
监控容器日志 227</p>
<p>10.6 
小结 229</p>
<p> 第 11 章  数据管理 230</p>
<p>11.1 
从一个例子开始 230</p>
<p>11.2 
实践 Rex-Ray driver 232</p>
<p>11.2.1 
安装 Rex-Ray 232</p>
<p>11.2.2 
配置 VirtualBox 234</p>
<p>11.2.3 
创建 Rex-Ray volume 236</p>
<p>11.2.4 
使用 Rex-Ray volume 237</p>
<p> 写在最后 243</p>

前 言

<p> 前  言 </p>
<p> 写在最前面 </p>
<p>《每天 5 分钟玩转 Docker 容器技术》是一个有关容器技术的教程,有下面两个特点:</p>
<p>1. 系统讲解当前最流行的容器技术 </p>
<p> 从容器的整个生态环境到各种具体的技术,从整体到细节逐一讨论。</p>
<p>2. 重实践并兼顾理论 </p>
<p> 从实际操作的角度带领大家学习容器技术。</p>
<p> 为什么要写这个 </p>
<p> 简单回答是:容器技术非常热门,但门槛高。</p>
<p> 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。</p>
<p> 对 IT 行业来说,这是一项非常有价值的技术。而对 IT 从业者来说,掌握容器技术是市场的需要,也是提升自我价值的重要途径。</p>
<p> 拿我自己的工作经历来说,毕业后的头几年是做 J2EE 应用开发。后来到一家大型 IT 公司,公司的产品从中间件到操作系统、从服务器到存储、从虚拟化到云计算都有涉及。</p>
<p> 我所在的部门是专门做 IT 基础设施实施服务的,最开始是做传统的 IT 项目,包括服务器配置,双机 HA 等。随着虚拟化技术成熟,工作上也开始涉及各种虚拟化技术的规划和实施,包括 VMWare、KVM、PowerVM 等。后来云计算兴起,在公司业务和个人兴趣的驱动下,开始学习和实践 OpenStack,在这个过程中写了《每天 5 分钟玩转 OpenStack》教程并得到大家的认可。</p>
<p> 现在以 Docker 为代表的容器技术来了,而且关注度越来越高,这一点可以从 Google Trend 中 Docker 的搜索上升趋势中清楚看到,如下图所示(图中曲线上扬最高的为 Docker)。</p>
<p> </p>
<p> 每一轮新技术的兴起,无论对公司还是个人既是机会也是挑战。</p>
<p> 我个人的看法是:如果某项新技术未来将成为主流,就应该及早尽快掌握。
因为:</p>
<p>1. 新技术意味着新的市场和新的需求 </p>
<p> 初期掌握这种技术的人不会很多,而市场需求会越来越大,因而会形成供不应求的卖方市场,物以稀为贵,这对技术人员将是一个难得的价值提升机会。</p>
<p>2. 学习新技术需要时间和精力,早起步早成材 </p>
<p> 机会讲过了,咱们再来看看挑战。</p>
<p> 新技术往往意味着技术上的突破和创新,会有不少新的概念和方法,而且从大数据、云计算和容器技术来看,这些新技术都是平台级别,覆盖的技术范围非常广,包括计算、网络、存储、高可用、监控、安全等多个方面,要掌握这些新技术对 IT 老兵尚有不小困难,更别说新人了。</p>
<p> 由于对技术一直保持着很高的热诚和执着,在掌握了 OpenStack 相关 IaaS 技术后,我便开始调研 PaaS 技术栈。正好这时 Docker 也越来越流行,自然而然便开始了容器相关技术的学习研究和实践。</p>
<p> 学习容器技术的过程可以说是惊喜不断,经常惊叹于容器理念的先进和容器生态环境的完整和强大。很多传统软件开发和运维中的难题在容器世界里都能轻松解决,也渐渐理解了容器为何如此受到青睐。</p>
<p> 不夸张地说,容器为我打开了一扇通往另一个软件世界的大门,让我沉浸其中,激动不已。高兴之余,我也迫不及待地想把我所看到、所学到和所想到的有关容器的知识介绍给更多的人,让更多的 IT 工程师能够从容器技术中受益。
</p>
<p> 我希望这个教程也能为大家打开这扇门,降低学习的曲线,系统地学习和掌握容器技术。</p>
<p> 写给谁看 </p>
<p> 这套教程的目标读者包括:</p>
<p>1. 软件开发人员 </p>
<p> 相信微服务架构(Microservice Architectur)会逐渐成为开发应用系统的主流,而容器则是这种架构的基石。市场将需要更多能够开发出基于容器的应用程序的软件开发人员。</p>
<p>2. IT 实施和运维工程师 </p>
<p> 容器为应用提供了更好的打包和部署方式,越来越多的应用将以容器的方式在开发、测试和生产环境中运行。掌握容器相关技术将成为实施和运维工程师的核心竞争力。</p>
<p>3. 我自己 </p>
<p> 我坚信最好的学习方法是分享。编写这个教程同时也是对自己学习和实践容器技术的总结。对于知识,只有把它写出来并能够让其他人理解,才能说明真正掌握。</p>
<p> 包含哪些内容 </p>
<p> 本系列教程分为《每天 5 分钟玩转 Docker 容器技术》和《每天 5 分钟玩转 Docker 容器平台》两本,包括以下三大块内容:</p>
<p> </p>
<p> 下面分别介绍各部分包含的内容。</p>
<p>1. 启程 </p>
<p> 如下图所示,“启程”会介绍容器的生态系统,让大家先从整体上了解容器包含哪些技术,各种技术之间的相互关系是什么,然后再来看我们的教程都会涉及生态中的哪些部分。</p>
<p> </p>
<p> 为了让大家尽快对容器有个感性认识,我们会搭建实验环境并运行第一个容器,为之后的学习热身。</p>
<p>2. 容器技术 </p>
<p>“容器技术”主要内容如下图所示,包含“容器核心知识”和“容器进阶知识”两部分。</p>
<p> </p>
<p> 核心知识主要回答有关容器 What、Why 和 How 三方面的问题,其中以 How 为重,将展开讨论架构、镜像、容器、网络和存储。</p>
<p> 进阶知识包括将容器真正用于生成所必需的技术,包括多主机管理、跨主机网络、监控、数据管理、日志管理和安全管理。</p>
<p> 这部分内容将在本书《每天 5 分钟玩转 Docker 容器技术》中详细讨论。</p>
<p>3. 容器平台技术 </p>
<p> 如下图所示,“容器平台技术”包括容器编排引擎、容器管理平台和基于容器的 PaaS。容器平台技术在生态环境中占据着举足轻重的位置,对于容器是否能够落地,是否能应用于生产至关重要。</p>
<p> </p>
<p> 我们将在本系列教程的另一本书《每天 5 分钟玩转 Docker 容器平台》中详细讨论容器编排引擎、容器管理平台和基于容器的 PaaS,学习和实践业界最具代表性的开源产品。</p>
<p> 怎样的编写方式 </p>
<p> 我会继续采用《每天 5 分钟玩转 OpenStack》(本书已在清华出版)的方式,通过大量的实验由浅入深地探讨和实践容器技术,力求达到如下目标:</p>
<p>(1)快速上手:以最直接、最有效的方式让大家把容器用起来。</p>
<p>(2)循序渐进:由易到难、从浅入深,详细分析容器的各种功能和配置使用方法。</p>
<p>(3)理解架构:从设计原理和架构分析入手,深入探讨容器的架构和运行机理。</p>
<p>(4)注重实践:以大量实际操作案例为基础,让大家能够掌握真正的实施技能。</p>
<p> 在内容的发布上还是通过微信公众号(cloudman6)每周一、三、五定期分享。欢迎大家通过公众号提出问题和建议,进行技术交流。</p>
<p> 为什么叫《每天 5 分钟玩转 Docker 容器技术》</p>
<p> 为了降低学习的难度并且考虑到移动端碎片化阅读的特点,每次推送的内容大家只需要花 5 分钟就能看完(注意这里说的是看完,有时候完全理解可能需要更多时间哈),每篇内容包含 1~3 个知识点,这就是我把本书命名为《每天 5 分钟玩转 Docker 容器技术》的原因。虽然是碎片化推送,但整个教程是系统、连贯和完整的,只是化整为零了。</p>
<p> 好了,今天这 5 分钟算是开了个头,下面我们正式开始玩转 Docker 容器技术。</p>
<p> </p>
<p> 编  者 </p>
<p>2017 年 7 月 </p>

媒体评论

评论

退出移动版