查找码头工人层的相应码头工人图像

时间:2018-08-21 09:27:18

标签: image docker layer docker-registry nexus3

我们正在使用nexus oss 3.13作为私有docker登录。 在开发过程中,由于配置错误,某些图像/图层可能会变得非常大。

当前,我们有一个关联的groovy脚本,可以生成最大文件(== layer)的报告,但是无法找到相应的图像。

对于生产来说,这是一个表演的终结者。因此,我们无法删除正在使用较大图层的图像,因为我们不知道哪个图像受到影响。

我们很惊讶,没有提供这种基本功能。

我们是否错过了文档中的内容?

其他人如何解决这个问题?

是否有人可以将docker图层与docker映像匹配,以解决此问题?

1 个答案:

答案 0 :(得分:0)

您可以在/ var / lib / docker / image文件夹中复制该层的非截断ID(SHA256)并对其进行grep。

这将找到一个具有SourceRepository JSON字段的文件:

$/var/lib/docker/image# find . -name *aae63f31dee9107165b24afa0a5e9ef9c9fbd079ff8a2bdd966f8c5d8736cc98*
./overlay2/distribution/v2metadata-by-diffid/sha256/aae63f31dee9107165b24afa0a5e9ef9c9fbd079ff8a2bdd966f8c5d8736cc98

然后,当我们cat该文件时,我们可以看到我上面提到的SourceRepository字段:

/var/lib/docker/image# cat ./overlay2/distribution/v2metadata-by-diffid/sha256/aae63f31dee9107165b24afa0a5e9ef9c9fbd079ff8a2bdd966f8c5d8736cc98
[{"Digest":"sha256:9931fdda3586a52049081bc78fa9793476662310356127cc8baa52e38bb34a8d","SourceRepository":"docker.io/library/mysql","HMAC":""}]

在上面,我们可以看到源图像是“ MySQL”,它是我从中随机选择的一层。

到目前为止,我不认为有内置的方法可以完成此操作,也许值得提交功能请求。