Docker层重用

时间:2019-02-26 17:28:59

标签: artifactory

目前,人工工厂存储多个重复的Docker图像层。如果图像A和图像B都取决于图层SHA__12345,则工件将存储两个图层副本。除非SHA__12345层的大小为千兆字节,否则这不是问题。在这种情况下,您确实会很快用完空间。

由于存储原因,人工制品中是否有办法对重复的图层进行重复数据删除?

谢谢!

1 个答案:

答案 0 :(得分:1)

工厂使用checksum-based storage

  

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

     

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

这样做的一个含义是,通常会对工件进行重复数据删除。具有相同校验和的任何两个工件都将指向存储中的同一文件,即使它们位于不同的存储库中也是如此。这适用于Docker层以及所有其他工件。因此,您不应该对此有任何疑问。