dei*_*tch 8 docker docker-registry
我试图理解docker images(或docker inspect)报告的图像ID 与注册表或清单中的实际图层或图像(使用v2)之间的联系.
我运行码头图像,我得到(缩写和更改以保护不那么无辜):
REPOSITORY TAG IMAGE ID
my.local.registry/some/image latest abcdefg
Run Code Online (Sandbox Code Playgroud)
如果我使用API拉出上面图像的清单,我会得到一个包含fsLayers,而不是其中一个匹配图像的(完整)ID.我明白了,因为图像是图层的总和.
但是,如果我将该图像拉到别处,我会获得相同的ID.如果我更新图像,推送它,新版本有一个新的ID.
我以为它可能是清单的哈希.但是,(a)通过API提取清单不会返回JSON中清单的哈希值,并且(b)查看注册表目录本身,给定清单中的sha256 /var/lib/registry/v2/repositories/some/image/_manifests/tags/latest/current/link(或那些index/sha256/)给出了正确的链接对于已下载但与图像ID不匹配的清单.
我假设图像ID与blob匹配,但也许我错了?
当我们将图像推送到注册表中时,
因此,在我们的主机中,我们拥有的哈希值是这些层中存在的内容的哈希值,称为Content Hashes。
但是我们将压缩层发送到注册表,因此内容会发生变化,因此哈希值也会发生变化。因此,在发送这些压缩层之前,会计算压缩层的哈希值,称为分布哈希值,并将这些哈希值放入清单文件中。
由于这些内容和分发哈希的不同,您会看到 id 的不同。
| 归档时间: |
|
| 查看次数: |
3876 次 |
| 最近记录: |