Как получить манифесты, используя HTTP API v2? - PullRequest
0 голосов
/ 20 марта 2019

Как пройти проверку подлинности с помощью 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}
...