检查我的私有 Docker 注册表中是否存在特定层

Check if a specific layer exists in my private Docker registry

我想检查我的私有 Docker 注册表中是否存在特定层。为此,我将检查 blob 是否存在:HEAD /v2/<name>/blobs/<digest>.

我的问题是找到图层摘要。我已经尝试使用 layer.DiffID [使用 DiffID = SHA256hex(uncompressed layer tar data)] 计算,但无法正常工作,因为 DiffID 不是层摘要。

有人知道如何calculate/generate层摘要吗?

Layer_Digest 是用 sha256sum(compressed_layer) 和...

计算的

compressed_layer=gzip.NewWriter(uncompressed_layer).

要获得压缩层,您需要使用 Golang gzip 实现。只有 GOLang gzip returns 压缩层正确并且使用这个压缩层已经可以生成注册表中存在的摘要。