- Я пытался установить реестр 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), но нет реального ответа на , почему он не работает.
Любая помощь будет наиболее полезной.