Внешняя организация, с которой я работаю, дала мне доступ к закрытому (защищенному токеном токену) реестру докеров, и в итоге я бы хотел иметь возможность запрашивать этот реестр, используя 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, так в чем же разница между этими двумя случаями?