,," /> " />

目 录CONTENT

文章目录

UnionFS工作原理-AUFS和Docker实现

Administrator
2024-03-05 / 0 评论 / 0 点赞 / 20 阅读 / 2630 字

简介

UnionFS & AUFS

UnionFS(联合文件系统)是一种能够将多个文件系统以分层的方式联合挂载的文件系统。AUFS(Another Union File System)是Linux上的一种UnionFS实现,它在容器领域得到了广泛应用,特别是在Docker中。

在AUFS的工作原理中,不同的文件系统层被叠加在一起,形成一个统一的文件系统视图。当容器需要对文件进行读取或写入时,AUFS会根据层级关系找到对应的文件进行操作,使得各层文件系统的内容对外呈现为单个文件系统,这样就实现了分层存储和高效管理的特性。

Docker利用AUFS来实现镜像的分层存储,每个Docker镜像都由多个文件系统层组成,这些层可以被共享和重用,从而节省存储空间和提高镜像的构建和传输效率。

因此,AUFS作为UnionFS底层的一种实现,为Docker提供了强大的文件系统支持,使得Docker能够更高效地管理和运行容器。

diff

在 Docker 中,宿主机的文件系统和容器的文件系统之间存在一种称为 diff 的概念。这指的是容器文件系统与其基础镜像之间的差异

当你启动一个容器时,Docker 会在基础镜像上创建一个可写层(Writable Layer),容器内的所有改动都会被记录在这个可写层中。这样,容器的文件系统实际上是基础镜像加上这个可写层的组合。

diff 即表示了这个可写层和基础镜像之间的差异。通过 diff,Docker 可以高效地管理容器的改动,节省存储空间,并且能够更快速地构建和重复使用容器。

总的来说,diff 是容器文件系统的可写层与基础镜像之间的区别,它允许 Docker 高效地管理容器的存储和版本控制。

lowerdir、upperdir 和 workdir

lowerdir、upperdir 和 workdir 是 AUFS 文件系统中的概念,它们用来记录 UnionFS 中的文件差异。

  • lowerdir:指定了底层文件系统的路径,包含了只读的基础文件系统,通常是 Docker 镜像的各个层。

  • upperdir:指定了可写层的路径,记录了容器内文件系统的改动,即容器内部对文件的修改和创建等操作都会记录在这一层。

  • workdir:用来存放 AUFS 内部操作所需的工作目录。

当容器启动时,AUFS 会将 lowerdirupperdir 进行联合挂载,并且将它们的文件差异以及相应的变更记录在 workdir 中。这样就实现了对容器文件系统修改的追踪和管理。通过这种机制,Docker 能够高效地处理容器的文件变更,以及支持镜像的分层存储和轻量级的快速部署。

因此,lowerdirupperdirworkdir 记录的 diff 即表示了容器文件系统与其基础镜像之间的差异,以及容器内部对文件的改动。

参考示例

image-20220818100810959.png

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区