Как составить список репозиториев образов докеров, используя реестр http api v2?

Я пытаюсь получить список репозиториев внутри реестра докеров, используя API версии 2.

Моя цель - получить репозитории из докер-хаба, который принадлежит мне.

Сначала я использовал обычную аутентификацию, чтобы получить токен носителя с сервера аутентификации "https://auth.docker.io/token?service=registry.docker.io"

Затем я позвонил, чтобы получить список репо, используя этот токен носителя "https://index.docker.io/v2/_catalog" . Но я получаю несанкционированную ошибку. Любая идея, почему это может быть причиной.


person Jitendra    schedule 09.08.2017    source источник
comment
Как вы передавали авторизацию на второй вызов?   -  person Tarun Lalwani    schedule 09.08.2017
comment
Предъявитель ‹токен, который я получил от первого звонка›   -  person Jitendra    schedule 10.08.2017


Ответы (2)


Я обнаружил, что хотя вызов для получения списка репозиториев верен, этот API намеренно заблокирован в dockerhub. У Docker-хаба огромный список репозиториев, и, вероятно, по этой причине они заблокировали этот вызов. В качестве альтернативы вы можете использовать API поиска из Docker v1.

person Jitendra    schedule 17.08.2017

Просмотрел код GOLang и обнаружил, что API следует RFC 2616, раздел 14.8. Безопасность использует заголовок авторизации HTTP с токеном аутентификации «Basic».

Пример использования PowerShell для отображения репозиториев.

  1. Используйте docker CLI для создания учетных данных

    docker login --username myuseraccount --password secretpassword

    кошка ([IO.Path]::Combine($env:USERPROFILE, '.docker\config.json'))

  2. Скопируйте базовый токен из config.json в буфер обмена.

  3. Перечислите свои репозитории Azure. Необходимо пространство между токеном в кодировке Basic и base64.

    Invoke-RestMethod -Uri https://YOURAZUREREGISTY.azurecr.io/v2/_catalog -Method Get -Headers @{'Authorization'='Basic PASTEBASE64BASICTOKENFROM2'}

person user2205317    schedule 27.05.2019