Не удается войти в Docker Registry с настроенной аутентификацией - PullRequest
0 голосов
/ 15 ноября 2018
  • Я пытался установить реестр Docker с базовой аутентификацией.

Он должен быть подключен к gitlab, последняя версия CentOS Linux выпуск 7.5.1804, 3.10.0-862.14.4.el7.x86_64. Версия докера: 17.05.0-ce, версия API: 1.29

  • Сервер, настроенный для Реестра: AWS CentOS 6.9, 4.14.77-69.57.amzn1.x86_64. Версия докера: 18.06.1-ce, версия API: 1.38
  • Docker находится на V2 (и реестр, и gitlab)

Это работает безупречно:

docker run -d -p 1300:5000 --restart=always --name registry -v /opt/ssl:/opt/ssl -e REGISTRY_HTTP_TLS_CERTIFICATE=/opt/ssl/CERT.crt -e REGISTRY_HTTP_TLS_KEY=/opt/ssl/SRV_KEY.key registry:2

Я могу вставлять, удалять и просматривать изображения в Интернете с помощью

https://example.com:1300/v2/_catalog

Здесь вещи начинают усложняться, Я пытаюсь реализовать базовую аутентификацию в реестре:

Первоначально я бежал docker run --entrypoint htpasswd registry:2 -Bbn USER PASSWORD > /opt/auth/htpasswd

(Примечание: использовать .htpasswd не удалось, но с помощью htpasswd сработало. Почему? Почему я не могу использовать скрытый файл? Докер не может найти его, хотя он на самом деле работает с root?)

Тогда я побежал docker run -d -p 1300:5000 --restart=always --name registry -v /opt/ssl:/opt/ssl -e REGISTRY_HTTP_TLS_CERTIFICATE=/opt/ssl/CERT.crt -e REGISTRY_HTTP_TLS_KEY=/opt/ssl/SRV_KEY.key -v /opt/auth:/opt/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/opt/auth/htpasswd registry:2

(версия реестра без аутентификации была удалена из курса, также в некоторых местах предлагается использовать pwd в соответствующем месте после флага -e, но это не сработало - контейнер запускается в цикле перезапуска, который никогда не заканчивается)

Теперь я могу войти в реестр через Интернет (что, как я полагаю, доказывает, что процесс аутентификации работает?), Но страница пуста. dev tools показывает HTTP-ответ 200 для домена, но я получаю http-ответ 400 для всех остальных.

При попытке войти в систему через cli в реестр:

docker login --username username example.com:1300 ||

docker login --username username https://example.com:1300

Я получил отказ в соединении.

  • ВСЕ порты открыты.
  • пароль был принят в сети, поэтому механизм наверняка работает ..
  • Я проверил разрешение файла, все было сделано root, так кому это не доступно?
  • сервис и контейнер работают и работают.

Многие сайты заявляют, что процесс, который я использовал, работает (даже на SO), но нет реального ответа на , почему он не работает.

Любая помощь будет наиболее полезной.

...