Image 查找docker层的相应docker图像

Image 查找docker层的相应docker图像,image,docker,layer,docker-registry,nexus3,Image,Docker,Layer,Docker Registry,Nexus3,我们使用NexusOSS3.13作为私有docker注册表。 由于配置错误,在开发过程中,某些图像/层可能会变得非常大 目前,我们有一个nexus groovy脚本,它生成最大文件(=层)的报告,但无法找到相应的图像 对于制作来说,这是一个表演的阻碍。因此,我们不能删除使用大图层的图像,因为我们不知道哪个图像受到影响 我们感到惊讶的是,没有提供这样的基本功能 我们在文档中遗漏了什么吗 其他人如何解决这个问题 是否有人有很好的方法/解决方法(可能是groovy脚本)将docker层与docker图

我们使用NexusOSS3.13作为私有docker注册表。 由于配置错误,在开发过程中,某些图像/层可能会变得非常大

目前,我们有一个nexus groovy脚本,它生成最大文件(=层)的报告,但无法找到相应的图像

对于制作来说,这是一个表演的阻碍。因此,我们不能删除使用大图层的图像,因为我们不知道哪个图像受到影响

我们感到惊讶的是,没有提供这样的基本功能

我们在文档中遗漏了什么吗

其他人如何解决这个问题


是否有人有很好的方法/解决方法(可能是groovy脚本)将docker层与docker图像匹配以解决此问题?

您可以复制该层的非截断ID(SHA256),并在/var/lib/docker/image文件夹中对其进行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”,我从中随机选取了一层


到目前为止,我还不认为有一种内置的方法可以实现这一点,也许值得提交一个功能请求。

在nexus docker注册表中,无法浏览目录结构。nexus存储库组织在nexus blob存储中。不幸的是,这些blob存储不是普通目录。@bulle您可以对图像进行本地拉取,并编写上面的脚本,以便它为您找到图像。这并不理想,但这是我目前提出的最有效的解决方案。好的,谢谢你的努力,但有一个问题。在docker push期间,注册表中的层被压缩。所以他们有另一个散列,我无法与我以前通过groovy脚本找到的散列相比…我们的解决方案是,用一个脚本获取所有清单,并在其中搜索过大的层。。