Что такое конечная точка API реестра докеров v2 для получения дайджеста для образа?

Согласно https://docs.docker.com/registry/spec/api/ Я могу вызвать /v2/<name>/tags/list, чтобы получить список тегов для данного изображения. Он отлично работает, например:

{"name"=>"avi/test", "tags"=>["latest"]}

Однако я хотел бы получить дайджест для каждого тега. Да, «дайджест» на самом деле является хэшем манифеста (по крайней мере, как я лучше всего понял из API; не на 100% ясно). Однако я хотел бы узнать, что такое уникальный идентификатор для «последнего» (и любого другого тега).

Пример использования: я мог бы попросить кого-то пометить версию как последнюю и проверить, актуальна ли она:

docker push avi/test:2.6
docker tag avi/test:2.6 avi/test:latest
docker push avi/test:latest
# build 2.7
docker push avi/test:2.7
# oops! Forgot to tag latest to 2.7

В приведенном выше случае, если я смогу проверить не только теги, которые дадут мне «2.6», «2.7», «последний», но и дайджест (по крайней мере, манифеста), я смогу найти, на что указывают различные теги. , аудит и т.д.


person deitch    schedule 03.02.2016    source источник


Ответы (1)


Насколько я знаю, API-интерфейса дайджеста не существует. Однако согласно спецификации API v2 вы можете выполнить HEAD или GET запрос против /v2/<name>/manifests/<reference>. Ответ будет включать заголовок Docker-Content-Digest, содержащий дайджест указанного манифеста (например, latest).

person Ryan Wentzel    schedule 15.02.2016
comment
Ооо, я пропустил это в спецификации. Итак, если я делаю HEAD /v2/avi/test/manifests/latest или HEAD /v2/avi/test/manifests/2.7, то заголовок для Docker-Content-Digest должен быть уникальным, чтобы я мог сравнивать версии? - person deitch; 16.02.2016
comment
Да, заголовок Docker-Content-Digest должен дать вам то, что вам нужно. - person Ryan Wentzel; 17.02.2016
comment
Спасибо, Райан, очень признателен. У меня есть простой реестр: 2 гем Ruby, который выполняет поиск, получает теги и теперь сможет получать хэши для сравнения. Идеальный. github.com/deitch/docker_registry2 - person deitch; 17.02.2016
comment
когда я использую HEAD registry.hub.docker.com/v2/alpine/ manifests/latest Я получаю 404, есть идеи? - person soninob; 21.07.2016
comment
Я могу получить Docker-Content-Digest из этой конечной точки, но это не дайджест изображения, поэтому я думаю, что этот ответ больше не применяется. Я разместил дополнительный вопрос stackoverflow.com/q/39375421/1220269. - person Nathaniel Waisbrot; 07.09.2016
comment
Вопрос, связанный с @NathanielWaisbrot, дает правильный ответ. Короткая версия — добавить заголовок Accept: application/vnd.docker.distribution.manifest.v2+json к запросу, а затем Docker-Content-Digest — правильный дайджест. - person mcrute; 26.03.2018