Где я могу найти код sha256 образа докера?
Я хотел бы вытащить образы centos, tomcat,... используя их код sha256, как в
docker pull [email protected]:0ecb2ad60
но я не могу найти код sha256 для использования в любом месте.
Я проверил хранилище dockerhub на наличие любого намека на код sha256, но не смог найти ни одного. Я скачал изображения по их тегам
docker pull tomcat:7-jre8
и проверил изображение с помощью окна docker inspect
чтобы увидеть, есть ли в метаданных код sha256, но его нет (добавление кода изображения sha256, вероятно, изменит код sha256).
Нужно ли самому вычислять код sha256 изображения и использовать его?
Ответы
Ответ 1
Просто увидел:
Когда я вытягиваю изображение, код sha256 дублируется в нижней части вывода (Digest: sha....):
docker pull tomcat:7-jre8
7-jre8: Pulling from library/tomcat
902b87aaaec9: Already exists
9a61b6b1315e: Already exists
...
4dcef5c50d60: Already exists
Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Status: Image is up to date for tomcat:7-jre8
Этот ша-код
sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
можно использовать, чтобы вытащить изображение с помощью
docker pull tomcat @sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Таким образом, вы можете быть уверены, что изображение не будет изменено и может быть безопасно использовано для производства.
Ответ 2
Последний ответ
Редактировать предложенный OhJeez в комментариях.
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
Оригинальный ответ
Я считаю, что вы также можете получить это с помощью
docker inspect --format='{{.RepoDigests}}' $IMAGE
Работает только в Docker 1.9 и если изображение было изначально извлечено дайджестом. Подробности на трекере проблем докера.
Ответ 3
Вы можете получить его с помощью docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
docker/ucp-agent 2.1.0 sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3 583407a61900 3 weeks ago 22.3 MB
Ответ 4
Это должно было быть поле Id, которое вы могли видеть в старой устаревшей API-интерфейс Docker Hub
GET /v1/repositories/foo/bar/images HTTP/1.1
Host: index.docker.io
Accept: application/json
Parameters:
namespace – the namespace for the repo
repo_name – the name for the repo
Пример ответа:
HTTP/1.1 200
Vary: Accept
Content-Type: application/json
[{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
"checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"},
{"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds",
"checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]
НО: теперь это не так, как сейчас работает с новым распределением докеров.
См. вопрос 628: "Получить идентификатор изображения с именем тега"
Ответ /v1/
ответа на реестр /repositories/<repo>/tags
, используемый для отображения идентификатора изображения вместе с дескриптором тега.
/v2/
только, кажется, дает ручку.
Было бы полезно получить идентификатор для сравнения с идентификатором, найденным локально. Единственное место, где я могу найти идентификатор, находится в разделе v1Compat
манифеста (который является излишним для информации, которую я хочу)
Текущий (средний 2015) ответ:
Это свойство API-интерфейса V1 было очень дорогостоящим, поскольку способ хранения изображений на бэкэнд. Только имена тегов перечислены, чтобы избежать вторичного поиска.
Кроме того, API V2 не имеет отношения к идентификаторам изображений. Скорее, он использует дайджесты для идентификации слоев, которые могут быть рассчитаны как свойство слоя и независимо проверяемы.
Ответ 5
В дополнение к существующим ответам, вы можете использовать --digests
во время выполнения docker images
чтобы получить список дайджестов для всех ваших изображений.
docker images --digests
Вы можете добавить grep, чтобы углубить детали
docker images --digests | grep tomcat
Ответ 6
Просто выпустите docker pull tomcat:7-jre8
снова, и вы получите то, что хотите.
Ответ 7
Более новые версии докера должны поддерживать это:
$ docker image inspect --format='{{.ID}}' node:10.9-alpine
sha256:df2d34f007a1b8faeff432f21fc0839e135ef567d73aac5bae9f0bcf5007f6ac
$ docker -v
Docker version 18.06.1-ce, build e68fc7a