无法使用已配置的身份验证登录Docker Registry

时间:2018-11-15 09:48:09

标签: docker authentication ssl docker-registry

  • 我一直在尝试使用基本身份验证安装Docker注册表。

它应该连接到最新版本的gitlab- CentOS Linux版本7.5.1804,3.10.0-862.14.4.el7.x86_64。 Docker版本:17.05.0-ce,API版本:1.29

  • 为注册表设置的服务器是: AWS CentOS 6.9,4.14.77-69.57.amzn1.x86_64。 Docker版本: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

这是事情开始变得复杂的地方, 我正在尝试在注册表上实现基本的Auth:

最初我跑了docker run --entrypoint htpasswd registry:2 -Bbn USER PASSWORD > /opt/auth/htpasswd

(附带说明,使用.htpasswd失败,但是使用htpasswd起作用了-为什么?为什么我不能使用隐藏文件?尽管它实际上是用root运行的,但docker找不到它?)

然后我跑了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

(非授权版本的注册表已被删除,当然,有些地方建议在-e标志后的受尊敬的位置使用pwd,但是那没用-容器在重启循环中启动,从不结束)

现在,我可以通过Web登录到注册表,(我假设这证明了auth进程有效,?),但是页面空白。开发工具显示了针对该域的http响应200,但是我获得了所有其他响应的http响应400。

当尝试使用cli通过cli登录到注册表时:

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

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

我被拒绝连接。

  • 所有端口均打开。
  • 密码已被网络接受,因此该机制肯定有效。.
  • 我检查了文件权限,所有权限都是root用户创建的,因此谁无法访问?
  • 服务和容器正在正常工作。

许多站点都指出,我使用的过程是可行的(即使在SO上也是如此),但是对于为什么不起作用,却没有真正的答案。

任何帮助都是最有帮助的。

0 个答案:

没有答案