如何验证 docker 镜像哈希值?

ric*_*ich 6 hash docker

我正在尝试重现我docker images --digests自己生成的哈希值。

我尝试运行docker save -o image.tar <image>提取它并运行cat metadata.json | shasum -a 256(以及一些变体,例如通过 jq 进行管道传输或修剪它),但无法匹配 docker 给我的哈希值。

我应该尝试的工作,或者我可以使用其他机制吗?

Yur*_*rov 2

这篇文章可以清楚地看出

Docker 镜像的 ID 是一个摘要,其中包含镜像 JSON 配置对象的 SHA256 哈希值

您尝试对shasum保存的图像进行 JSON 配置是正确的,但您使用了错误的配置文件。

$ docker image save da86e6ba6ca1 -o img.tar # note the hash
$ tar -xvf img.tar
$ ls
4ab1c614436ccb31a69026cb4e8404a8c8a6503acb3596f9c23283c6cec42321
da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e.json
img.tar
manifest.json

$ cat manifest.json| shasum -a 256
f5ac61be9063b8cc34260a4f18693d3eafcc51af43c98853937dead3b8f0952d  - # wrong hash

$ cat da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e.json| shasum -a 256
da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e  - # correct
Run Code Online (Sandbox Code Playgroud)

因此,要自己计算哈希值,您需要使用以图像哈希值作为名称的 JSON 文件,而不是清单。