#docker #api #docker-registry #sonatype #nexus3
#docker #API #docker-реестр #sonatype #nexus3
Вопрос:
У меня есть частный контейнер sonatype nexus repository manager OSS 3.25.1-04, запущенный на виртуальной машине (с маршрутизацией nginx из docker.ввод-вывод в URL-адрес диспетчера репозиториев), который содержит несколько репозиториев, одним из которых является реестр docker.
Я хочу использовать docker registry v2 api из приложения react, чтобы получить список изображений docker в репозитории и, возможно, еще несколько показателей о репозитории и его содержимом.
Я попытался вызвать api напрямую: https://nexus3:8083/v2/_catalog
но получил 401 UnAuthorized
ответ при проверке вкладки devtools network
Затем для входа в api я попытался использовать https://auth.docker.io/token?service=registry.docker.ioamp;scope=repository:samalba/my-app:pull,push
при замене samalba/my-app
своим собственным реестром и примером образа docker. Я знаю, что эта ссылка предназначена для получения токена только для этого изображения, не удалось найти его для всего api (он все равно не работал)
Не могла бы помочь некоторая помощь в том, как подключиться к api получить токен jwt и использовать его или как использовать api с http вместо этого
Комментарии:
1. Хм, зачем вам проходить аутентификацию в docker hub для использования локального репозитория?
Ответ №1:
Может произойти несколько вещей. Сначала попробуйте просто использовать базовую аутентификацию и посмотреть, работает ли это. Кроме того, вам может потребоваться установить некоторые дополнительные заголовки для подключения к nexus / sonatype. Вот пример с curl:
curl -H "Accept: application/vnd.docker.distribution.manifest.v2 json" -H "Content-Type: application/json" -H "User-Agent: docker/20.10.14" -u username:password -i https://nexus3:8083/v2/_catalog
Обратите внимание на поле user agent — я столкнулся с проблемами, когда уровень аутентификации отфильтровывается для пользовательского агента docker.
Если это все еще не работает, то следующее, что вы можете найти, это посмотреть, соответствует ли ответ реестра заголовку www-authenticate
. Это означает, что вам нужно будет сначала пройти аутентификацию с помощью этой службы для получения токена на предъявителя, а затем вы можете передать его обратно в реестр, используя Authorization
заголовок вместо базовой авторизации.
Надеюсь, это поможет.