简介
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 会将 lowerdir
和 upperdir
进行联合挂载,并且将它们的文件差异以及相应的变更记录在 workdir
中。这样就实现了对容器文件系统修改的追踪和管理。通过这种机制,Docker 能够高效地处理容器的文件变更,以及支持镜像的分层存储和轻量级的快速部署。
因此,lowerdir
、upperdir
和 workdir
记录的 diff 即表示了容器文件系统与其基础镜像之间的差异,以及容器内部对文件的改动。
评论区