Как я могу проверить хэш образа докера? - PullRequest
2 голосов
/ 04 октября 2019

Я пытаюсь воспроизвести хэш, созданный docker images --digests.

Я пытался запустить docker save -o image.tar <image>, распаковать его и запустить cat metadata.json | shasum -a 256 (и несколько вариантов, например, прохождение через jq илиобрезать его) но не смог сопоставить хеш, который мне дает докер.

Должно ли то, что я пытаюсь сработать, или есть другой механизм, который я могу использовать?

1 Ответ

0 голосов
/ 04 октября 2019

Из этого сообщения ясно, что

Идентификатор образа Docker - это дайджест, который содержит хэш SHA256 объекта конфигурации JSON образа

Вы были правы, пытаясь 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

Итак, чтобы самостоятельно вычислить хеш, вам нужно использовать JSONфайл с хэшем изображения в качестве имени, а не манифеста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...