首页>微信动态>8张图带你了解Docker容器和镜像

8张图带你了解Docker容器和镜像

写在前面:关于目前非常火热的Docker技术,小编在看每篇文的时候都心存敬畏;私以为,一项以解决问题为导向的技术值得尊重,一篇以讨论技术为目的的好文值得分享:

掌握一门技术并合理使用它的最好办法
就是深入理解这项技术背后的工作原理
本文旨在能够帮助读者简单理解Docker的一些简单命令以及容器和镜像之间的区别

 Image Definition
镜像是一堆只读层的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。
从左边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机的文件系统上访问到。统一文件系统。技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。我们可以在图片的右边看到这个视角的形式。
Container Definition
容器的定义和镜像几乎一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
细心的读者可能会发现,容器的定义并没有提及容器是否在运行,没错,这是故意的。正是这个发现帮助我理解了很多困惑。
要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器。
接下来,我们将会讨论运行态容器。
Running Container Definition
一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。

正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层。下面这张图展示了这个行为。



 Image Layer Definition
为了将零星的数据整合起来,我们提出了镜像层这个概念。下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统的改变,它还能包含了其他重要信息。
元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。需要注意,只读层和读写层都包含元数据。
除此之外,每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于最底层。


结语:

所谓分享,仁者见仁智者见智,感谢分享者的心得体会,也欢迎每一个真诚对待这门技术的质疑的声音。以上资料来源于公众号Docker,译者杨润青,小编做了一定整理。欢迎加入Docker技术微群参与讨论,有意请留言!





云舒网络官方微信二维码