Я хотел бы получить изображения centos, tomcat, ... используя их код sha256, как в
docker pull myimage@sha256:0ecb2ad60
но я нигде не могу найти код sha256, который можно было бы использовать.
Я проверил репозиторий dockerhub на предмет намеков на код sha256, но не нашел. Я скачал изображения по их тегу
docker pull tomcat:7-jre8
и проверил изображение с помощью, docker inspect
чтобы увидеть, есть ли код sha256 в метаданных, но его нет (добавление кода sha256 изображения, вероятно, изменило бы код sha256).
Должен ли я сам вычислять код sha256 изображения и использовать его?
docker
docker-registry
христианин
источник
источник
Ответы:
Последний ответ
Правка, предложенная OhJeez в комментариях.
Оригинальный ответ
Я считаю, что вы также можете получить это, используя
Работает только в Docker 1.9 и если образ изначально был извлечен дайджестом. Подробности можно найти на трекере проблем с докером.
источник
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
для каких - либо скобок (возвращает первый индекс массива)Вы можете получить это
docker images --digests
источник
docker images --format '{{.Digest}}'
. Это полезно вforeach
операторе, чтобы поработать с дайджестами.Только что видел:
Когда я извлекаю изображение, код sha256 отображается в нижней части вывода (Дайджест: sha ....):
Этот код sha
можно использовать, чтобы потом вытащить изображение с помощью
Таким образом, вы можете быть уверены, что изображение не изменилось и его можно безопасно использовать в производстве.
источник
Самый простой и краткий способ:
docker images --no-trunc --quiet $IMAGE
Это возвращает только
sha256:...
строку и ничего больше.например:
Редактировать:
ПРИМЕЧАНИЕ: это работает только для локальных изображений. Вы можете
docker pull $IMAGE
сначала, если требуется.источник
В дополнение к существующим ответам вы можете использовать
--digests
опцию при выполнении,docker images
чтобы получить список дайджестов для всех ваших изображений.Вы можете добавить grep для дальнейшей детализации
источник
Это должно было быть поле Id, которое вы могли видеть в старом устаревшем API Docker Hub.
НО: это не так, как сейчас работает с новым дистрибутивом докеров .
См. Проблему 628: «Получить идентификатор изображения с именем тега».
Текущий (середина 2015 г.) ответ:
источник
Я обнаружил, что вышеуказанные методы в некоторых случаях не работают. Они либо:
Приведенный ниже метод является деликатным, но работает для извлечения конкретного полного «имени» и хэша для определенного перемещаемого контейнера.
Вот сценарий: изображение загружается отдельно в 2 разных проекта в одном репо, поэтому запрос RepoDigests возвращает 2 результата.
Я хочу использовать альфа-результат, но не могу предсказать, какой это будет индекс. Поэтому мне нужно манипулировать выводом текста, чтобы удалить скобки и выделить каждую запись в отдельной строке. Оттуда я легко могу получить результат.
источник
Как упомянул @zelphir, использование дайджестов - не лучший способ, поскольку он не существует для локального образа. Я предполагаю, что идентификатор изображения sha является наиболее точным и согласованным для тегов / pull / push и т. Д.
Делает трюк.
источник
Вы можете найти его во время загрузки изображения из соответствующего репозитория. Команда Bellow упоминает Digest: sha256 во время получения образа докера.
09:33 ## ~ ::> docker --version Docker версия 19.03.4, сборка 9013bf5
Дайджест: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Как только изображение будет загружено, мы можем сделать следующее
"ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
источник
Просто оформляйте еще
docker pull tomcat:7-jre8
раз, и вы получите то, что хотите.источник