./var/lib/containers/storage/overlay/e017df6783793d5ff7a33c9e105c8fb06c68595ba8b4db484d8e8fec79db1358/diff/etc/taos/taosadapter.toml
./var/lib/containers/storage/overlay/e017df6783793d5ff7a33c9e105c8fb06c68595ba8b4db484d8e8fec79db1358/diff/usr/local/taos/cfg/taosadapter.toml
./var/lib/docker/overlay2/01e4e30c17880a4b08ba611a8e88d57a252d6e777a4780108e15e82db6e64340/merged/etc/taos/taosadapter.toml
./var/lib/docker/overlay2/01e4e30c17880a4b08ba611a8e88d57a252d6e777a4780108e15e82db6e64340/merged/usr/local/taos/cfg/taosadapter.toml
./var/lib/docker/overlay2/db07d222b427e900778891972018c7dd42f642d7abe47d45cdf4d0028b7aa6e3/diff/etc/taos/taosadapter.toml
./var/lib/docker/overlay2/db07d222b427e900778891972018c7dd42f642d7abe47d45cdf4d0028b7aa6e3/diff/usr/local/taos/cfg/taosadapter.toml
容器生成了 diff work merge 三个目录
Docker 使用 overlay2
存储驱动来管理镜像和容器的文件系统。这种存储驱动使用了层叠的文件系统,允许容器文件系统的层与镜像文件系统的层高效地共享。当你提到容器生成了 diff
、work
和 merged
三个目录,这是 overlay2
存储驱动的标准部分,每个目录都有其特定的用途:
1. Diff Directory
- 位置:例如
/var/lib/docker/overlay2/<layer-id>/diff
- 作用:这个目录包含了自该层之上的所有更改。每当容器修改了文件系统上的任何文件或目录时,这些更改都会存储在
diff
目录中。它是容器中每一层独有的更改集合,不会影响下面的层。
2. Work Directory
- 位置:例如
/var/lib/docker/overlay2/<layer-id>/work
- 作用:这是
overlay
文件系统用来准备下一层叠操作的工作目录。它是必需的,因为它用于处理临时文件,这些文件在文件层叠过程中需要。用户通常不需要也不应该直接操作这个目录。
3. Merged Directory
- 位置:例如
/var/lib/docker/overlay2/<layer-id>/merged
- 作用:这个目录是一个虚拟的文件系统,通过将所有层(包括基础镜像层和所有
diff
层)叠加起来形成的。这使得容器可以看到一个统一的文件系统视图。当你进入一个运行中的容器时,你看到的文件系统就是merged
目录。
文件系统层叠原理
当 Docker 需要启动一个容器时,它会创建一个新的 overlay2
层,其中包含 diff
、work
和 merged
三个目录。diff
目录用于存储在该容器生命周期中产生的所有文件更改。work
目录是技术性的,用于支持 overlay2
文件系统的操作,而 merged
目录则提供了一个统一的视图,使容器内的进程看到一个完整的文件系统。
总结
这种层叠文件系统的设计,特别是在容器技术中,极大地提高了存储效率和性能,因为只有实际更改的文件才需要额外存储空间,而未更改的文件则可以在多个容器之间共享。这也方便了快速启动容器和高效利用磁盘空间。