我试图理解docker images
(或docker inspect
)报告的图像ID 与注册表或清单中的实际图层或图像(使用v2)之间的联系.
我运行码头图像,我得到(缩写和更改以保护不那么无辜):
REPOSITORY TAG IMAGE ID my.local.registry/some/image latest abcdefg
如果我使用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匹配,但也许我错了?