Как заставить авторизацию работать над HTTP-запросом API (v2) к Dockerhub - PullRequest
0 голосов
/ 21 мая 2019

Я не уверен, правильно ли я это делаю.Я использую этот код, чтобы получить список тегов для общедоступного изображения:

export TOKEN=$(curl -S https://auth.docker.io/token\?service\=registry.docker.io\&scope\=repository:fedora:pull | awk -F'"' '{print $4}')
curl -S -H "Authorization: Bearer $TOKEN" \
https://registry-1.docker.io/v2/library/fedora/tags/list

Но он всегда возвращает {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/fedora","Action":"pull"}]}]}

Интересно, как правильно использовать эту авторизацию.Я основал код на https://github.com/docker/hub-feedback/issues/1253, и моя конечная цель - получить полный набор репозиториев и изображений в частной организации, но сначала мне нужно понять, как это работает.

Заранее спасибоза любую помощь.

https://github.com/docker/hub-feedback/issues/1253

1 Ответ

1 голос
/ 21 мая 2019

Смотрите сообщение, которое я написал об этом:

https://medium.com/google-cloud/adventures-w-docker-manifests-78f255d662ff

REPO="https://hub.docker.com/v2"
USER=[[YOUR-DOCKER-USERNAME]]
PASS=[[YOUR-DOCKER-PASSWORD]]
TOKEN=$(\
  curl \
  --silent \
  --header "Content-Type: application/json" \
  --request POST \
  --data '{"username": "'${USER}'", "password": "'${PASS}'"}' \
  ${REPO}/users/login/ \
  | jq -r .token\
) && echo ${TOKEN}
curl \
--silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USER}/?page_size=100 \
| jq -r '.results|.[]|.name'

curl \
--silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USER}/${IMAGE}/tags/
...