Как я могу использовать Docker Registry HTTP API V2 для получения списка всех репозиториев в реестре Docker? - PullRequest
2 голосов
/ 17 мая 2019

Внешняя организация, с которой я работаю, дала мне доступ к закрытому (защищенному токеном токену) реестру докеров, и в итоге я бы хотел иметь возможность запрашивать этот реестр, используя HTTP API V2 докера, чтобы получить список из всех репозиториев и / или изображений, доступных в реестре.

Но прежде чем я сделаю это, я сначала хотел бы получить некоторые базовые практики по созданию этих типов запросов API в общедоступном реестре, таком как Docker Hub . Поэтому я пошел дальше и зарегистрировал себя с именем пользователя и паролем в Docker Hub, а также ознакомился с документацией API V2, в которой говорится, что можно запросить проверку версии API как:

GET /v2/

или запросить список репозиториев as:

GET /v2/_catalog

Используя curl, вместе с именем пользователя и паролем, которые я использовал для регистрации моей учетной записи Docker Hub, я пытаюсь создать запрос GET в командной строке:

stachyra> curl -u stachyra:<my_password> -X GET https://index.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
stachyra> curl -u stachyra:<my_password> -X GET https://index.docker.io/v2/_catalog
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}

где, конечно, вместо <my_password> я заменил свой действительный пароль учетной записи.

Ответом, который я ожидал от этого запроса, было гигантское сообщение json, содержащее тысячи имен репозитория, но вместо этого кажется, что API отклоняет мои учетные данные Docker Hub.

Вопрос 1: У меня даже есть правильный URL-адрес (index.docker.io) для реестра Docker Hub? (Я сделал это предположение в первую очередь на основе информации о состоянии, возвращаемой инструментом командной строки docker info, поэтому у меня есть веские основания полагать, что это правильно.)

Вопрос 2: Если у меня есть правильный URL-адрес для самой службы реестра, почему мой запрос возвращает код ошибки "UNAUTHORIZED"? Учетные данные моей учетной записи работают нормально, когда я пытаюсь войти через веб-сайт hub.docker.com, так в чем же разница между этими двумя случаями?

...