Docker层复用

kar*_*t22 5 artifactory

Artifactory 目前存储多个重复的 docker 镜像层。如果图像 A 和图像 B 都依赖于层 SHA__12345,则artifactory 将存储两个层副本。除非层 SHA__12345 的大小为 1 GB,否则这不是问题。在这种情况下,您可能很快就会耗尽空间。

出于存储原因,有没有一种方法可以消除重叠层的重复数据?

谢谢!

Dar*_*nec 6

Artifactory 使用基于校验和的存储

上传到 Artifactory 的文件首先计算其 SHA1 校验和,然后重命名为其校验和。然后,它托管在配置的文件存储中,其目录结构由校验和的前两个字符组成。例如,校验和为“ac3f5e56...”的文件将存储在目录“ac”中;校验和为“dfe12a4b...”的文件将存储在目录“df”等中。

同时,Artifactory 创建一个数据库条目,将文件的校验和映射到存储库中上传到的路径。这种存储二进制文件的方式优化了 Artifactory 中的许多操作,因为它们是通过简单的数据库事务而不是实际操作文件来实现的。

这意味着工件通常会被重复删除。具有相同校验和的任何两个工件都将指向存储中的同一文件,即使它们位于不同的存储库中。这适用于 docker 层以及所有其他工件。所以你不应该对此有任何问题。