как использовать подключиться к sonatype nexus docker registry v2 api в веб-приложении?

#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 заголовок вместо базовой авторизации.

Надеюсь, это поможет.