Docker-Registry

docker 私有系統資料庫 - 基本身份驗證

  • April 3, 2018

我使用以下方法設置了一個不安全的私有系統資料庫:

[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

引用自:https://serverfault.com/questions/876499