Я настраиваю небезопасный частный реестр, используя:
[root@docker-regi ~]#docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > /auth/htpasswd
[root@docker-regi ~]#docker run -d -p 5000:5000 --restart=always --name registry_auth -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2
Но при попытке авторизоваться:
[root@docker-remote ~]# !748
docker login -u myuser -p mypassword 192.168.122.190:5000
Error response from daemon: login attempt to http://192.168.122.190:5000/v2/ failed with status: 400 Bad Request
[root@docker-remote ~]#
Упоминается https://docs.docker.com/registry/deploying/#native-basic-auth && https://github.com/docker/distribution/issues/842
В первой команде вы записали htpasswd на:
/auth/
затем вы установили:
`pwd`/auth
Таким образом, эти каталоги не совпадают, вы никогда не монтировали файл htpassswd
Если вы напишете auth/htpasswd
он будет работать, так как он пишет в ваш текущий каталог, а не в /
У меня отлично сработало следующее:
mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > auth/htpasswd
docker run -d -p 5000:5000 --restart=always --name registry_auth -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2
docker login -u myuser -p mypassword localhost:5000
Возврат:
Login Succeeded