没有合适的资源?快使用搜索试试~ 我知道了~
首页10张图带你深入理解Docker容器和镜像 高清PDF 学习docker原理
10张图带你深入理解Docker容器和镜像 高清PDF 学习docker原理
需积分: 50 47 下载量 6 浏览量
更新于2023-03-16
评论 2
收藏 2.45MB PDF 举报
在学习docker的过程中,容易对镜像和容器之间的概念进行混淆。这个资料就深入docker实现原理,帮助同学打通任督二脉,从此对docker的学习游刃有余
资源详情
资源评论
资源推荐
8/18/2017
10张图带你深入理解Docker容器和镜像 - DockOne.io
http://dockone.io/article/783 1/13
Docker (http://dockone.io/topic/Docker)
10张图带你深入理解Docker容器和镜像
【编者的话】本文用图文并茂的方式介绍了容器、镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker。
这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。
(http://dockerone.com/uploads/article/20151103/d6ad9c257d160164480b25b278f4a2ad.png)
当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Docker统一
文件系统(the union file system)的知识,然后回过头来再看Docker的命令,一切变得顺理成章,简单极了。
题外话:就我个人而言,掌握一门技术并合理使用它的最好办法就是深入理解这项技术背后的工作原理。通常情况下,一项新技术的诞生常常会伴随着媒体的大肆宣
传和炒作,这使得用户很难看清技术的本质。更确切地说,新技术总是会发明一些新的术语或者隐喻词来帮助宣传,这在初期是非常有帮助的,但是这给技术的原理
蒙上了一层砂纸,不利于用户在后期掌握技术的真谛。
Git就是一个很好的例子。我之前不能够很好的使用Git,于是我花了一段时间去学习Git的原理,直到这时,我才真正明白了Git的用法。我坚信只有真正理解Git内部
原理的人才能够掌握这个工具。
Image Definition
镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。
(http://dockerone.com/uploads/article/20151103/522c40256149bad2b471d1a97c2b6bb5.png)
从左边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机(译者
注:运行Docker的机器)的文件系统上访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这
样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。我们可以在图片的右边看到这个视角的形式。
登录 (http://dockone.io/login/)
注册 (http://dockone.io/account/register/)
8/18/2017
10张图带你深入理解Docker容器和镜像 - DockOne.io
http://dockone.io/article/783 2/13
你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现它们存在
于/var/lib/docker/aufs目录下。
sudo tree -L 1 /var/lib/docker/
/var/lib/docker/
├──aufs
├──containers
├──graph
├──init
├──linkgraph.db
├──repositories-aufs
├──tmp
├──trust
└──volumes
7directories,2files
Container Definition
容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
(http://dockerone.com/uploads/article/20151103/b7fb9d924aa12099369c4793050fcfab.png)
细心的读者可能会发现,容器的定义并没有提及容器是否在运行,没错,这是故意的。正是这个发现帮助我理解了很多困惑。
要点:容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。
接下来,我们将会讨论运行态容器。
Running Container Definition
一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。
(http://dockerone.com/uploads/article/20151103/8022edeebeb313742bd615aa695bbad3.png)
正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write
8/18/2017
10张图带你深入理解Docker容器和镜像 - DockOne.io
http://dockone.io/article/783 3/13
layer)。下面这张图展示了这个行为。
(http://dockerone.com/uploads/article/20151103/1dc88de5a114b68d05c37aab7e103597.png)
我们可以通过运行以下命令来验证我们上面所说的:
dockerrunubuntutouchhappiness.txt
即便是这个ubuntu容器不再运行,我们依旧能够在主机的文件系统上找到这个新文件。
find / -name happiness.txt
/var/lib/docker/aufs/diff/860a7b...889/happiness.txt
Image Layer Definition
为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念。下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统
的改变,它还能包含了其他重要信息。
(http://dockerone.com/uploads/article/20151103/e42d56394306894244af5bc6d757bee1.png)
元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。需要注意,只读层和读写层都包含元数
据。
剩余12页未读,继续阅读
wzqnls
- 粉丝: 97
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0