Docker(二)——镜像与容器的理解

本文深入探讨Docker的镜像和容器概念,解释了镜像是由多个只读层组成的统一视图,而容器在镜像基础上增加了一个可读写层。镜像层包含元数据,而运行态容器则包含隔离的进程空间。重点讨论了镜像层如何存储文件系统变化以及容器如何记录运行时的数据。
摘要由CSDN通过智能技术生成

深入理解Docker容器与镜像

在这里插入图片描述

镜像

镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。
在这里插入图片描述
从左边我们看到了多个只读层,它们重叠在一起。

除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机(译者注:运行Docker的机器)的文件系统上访问到。

统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在 用户 的角度看来,只存在一个文件系统(就相当于以一种俯瞰的视角看左边的多个层)。即右图形式。

你可以在你的主机文件系统上找到有关这些层的文件。

需要注意的是,在一个运行中的容器内部,这些层是不可见的。

容器

容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
在这里插入图片描述
要点:容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。

运行态容器

一个运行态容器(running container)被定义为一个可读写的统一文件系统 + 隔离的进程空间 和 包含其中的进程。

下面这张图片展示了一个运行中的容器(灰色区域为该容器 运行的进程 )。
在这里插入图片描述
一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write layer)。

下面这张图展示了这个行为:
在这里插入图片描述

镜像层

为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念。

下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统的改变,它还能包含了其他重要信息。
在这里插入图片描述
元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。

需要注意,只读层和读写层都包含元数据。
在这里插入图片描述
除此之外,每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于最底层。
在这里插入图片描述
一个容器的元数据好像是被分成了很多文件,但或多或少能够在/var/lib/docker/containers/目录下找到,就是一个可读层的id。

这个目录下的文件大多是运行时的数据,比如说网络,日志等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值