Как пройти проверку подлинности с помощью API V2 полезно и работает.
REPO="https://hub.docker.com/v2"
Я могу получать токены, перечислять (мои) репозитории и перечислять их изображения и теги.
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/tags/
Я бы хотел «ПОЛУЧИТЬ МАНИФЕСТ», но я изо всех сил пытаюсь заставить это работать:
https://docs.docker.com/registry/spec/api/#manifest:
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/manifests/
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/${USERNAME}/${IMAGE}/manifests/
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/${USERNAME}/${IMAGE}/manifests/${TAG}
Я пробовал с | без заголовка Host
. С различными значениями для заголовка Host
. Но я явно что-то упускаю. Я попытался сопоставить шаблоны с рабочими конечными точками, но без радости:
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/manifests/
Любопытно, что эта страница показывает «GET TAGS», по-видимому, некорректно как /v2/<name>/tags/list
:
https://docs.docker.com/registry/spec/api/#tags
Отзыв:
https://stackoverflow.com/a/45605443/609290
Последующий
Я - Google, и у меня есть доступ к Реестру контейнеров Google (GCR).
REPO="https://gcr.io/v2/"
По своей прихоти я только что попробовал «GET MANIFEST» против GCR, и запросы работают:
curl --silent \
--request GET \
--user _token:$(gcloud auth print-access-token) \
${REPO}/${PROJECT}/${IMAGE}/manifests/${TAG}