Mus*_*wal 6 security passwords .htpasswd docker docker-registry
我在 Windows 10 中向我的 docker 私有注册表添加身份验证。我最初没有实现基本身份验证,但后来,我使用 auth 文件夹中的 htpasswd 文件实现了它。我一直在跟进本教程中给出的说明:https://www.codeproject.com/Articles/1263831/How-to-secure-your-private-Docker-Registry。但由于 Windows 的 htpasswd 文件存在问题,因此我必须使用 HtPasswd 生成器创建一个 htpasswd 文件并将其复制到我的 auth 文件夹中。
\n后来,我运行此命令来构建容器并将卷、端口和 htpasswd 文件从主机绑定到我的容器:\ndocker run -d -p 5000:5000 --name hub.local -v C:\\localHub\\registry:/var/lib/registry -v C:\\localHub\\auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/.htpasswd -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 registry:2
它工作正常,我可以看到容器已启动并在端口 5000 上运行:
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n41499c3f07e6 registry:2 "/entrypoint.sh /etc\xe2\x80\xa6" 17 minutes ago Up 17 minutes 0.0.0.0:5000->5000/tcp hub.local\nRun Code Online (Sandbox Code Playgroud)\n但是当我尝试使用它登录到我的容器时,docker login 172.16.13.38:5000它会要求我输入用户名和密码,但显示相同的错误。
docker login 172.16.13.38:5000\nUsername: muskan\nPassword:\nError response from daemon: login attempt to http://172.16.13.38:5000/v2/ failed with status: 401 Unauthorized\nRun Code Online (Sandbox Code Playgroud)\n我仔细检查了 htpasswd 文件是否位于容器的 auth 文件夹中,并且我的注册表位于http://172.16.13.38:5000/v2/_catalog
\n请帮我解决这个问题。我无法弄清楚,从过去两天以来一直在尝试。
\nhtpasswd 文件包含以下内容:
\nmuskan:$apr1$k9......$4fyyuas7/VfnuBnPRbFI//
小智 12
您必须使用 bcrypt,因此要创建 htpasswd 文件,请使用:
$ htpasswd -cB htpasswd someUsername
Run Code Online (Sandbox Code Playgroud)
docker run --entrypoint htpasswd httpd:2 -Bbn USERNAM_HERE PASSWORD_HERE > PATH_TOVOLUME/htpasswd
Run Code Online (Sandbox Code Playgroud)
获得 htpasswd 文件后,指向它的位置
这里的例子是使用 docker-compose
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_STORAGE_DELETE_ENABLED: 'true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6934 次 |
| 最近记录: |