gpt4 book ai didi

docker - 创建带有身份验证的私有(private) Docker 注册表

转载 作者:行者123 更新时间:2023-12-02 06:29:36 27 4
gpt4 key购买 nike

所以我尝试运行我自己的带有身份验证的 docker 注册表,以便我可以从外部访问它。为此,我使用来自 docker hub 的 docker 注册表镜像,如下所示:

docker run -p 5000:5000 -d -v /opt/registry:/tmp/registry registry:0.8.1

然后,我使用 HAProxy 将其链接到 URL reg.mydomain.com 并添加身份验证:

userlist auth_list
group registry users root
user root password [password]

backend docker-registry
mode http
server localhost:5000_localhost localhost:5000 cookie localhost:5000_localhost

frontend web
mode http
bind *:80
bind *:443 ssl crt /path/to/ssl.pem
acl domain hdr(host) -i reg.mydomain.com
acl auth_docker_registry http_auth_group(auth_list) registry
acl registry_ping url_sub _ping
http-request auth realm Registry if !auth_docker_registry domain !registry_ping
use_backend docker-registry if domain

运行后,我使用以下命令登录:

root@mydomain:~# docker login https://reg.mydomain.com
Username: root
Password:
Email:
Login Succeeded

问题是,当我运行命令来推送或拉取注册表时,我收到以下错误:

root@mydomain:~# docker pull reg.mydomain.com/project1
The push refers to a repository [reg.mydomain.com/project1] (len: 1)
Sending image list
Pushing repository reg.mydomain.com/project1 (1 tags)
511136ea3c5a: Pushing
2014/11/24 20:40:33 HTTP code 401, Docker will not send auth headers over HTTP.

root@mydomain:~# docker pull reg.mydomain.com/project1
Pulling repository reg.mydomain.com/project1
2014/11/24 20:40:38 Could not reach any registry endpoint

我对问题的猜测是 HTTPS 连接在 HAProxy 处终止,其余连接(HAProxy 和 Docker 注册表容器之间)是 HTTP,但身份验证 header 仍然存在,导致推送错误。为了测试这一点,我将 reqidel ^Authorization 添加到 HAProxy 配置的后端部分,但没有效果。

还值得注意的是,我可以在网络浏览器中导航 https://reg.mydomain.com 和子目录,例如 /v1/_ping 等等按预期工作(我必须登录等)。另外,在撰写本文时,我使用的是 docker 注册表版本 0.8.1 而不是 0.9,因为 0.9 镜像无法启动。

如果需要任何其他信息,请告诉我。

谢谢,詹姆斯斯图伊

最佳答案

好吧,事实证明,仅仅告诉 docker 使用 HTTPS 是不够的,你必须强制它。为此,我在前端添加了重定向方案 https if !{ ssl_fc } domain,将 HTTP 流量重定向到 HTTPS,从而阻止了上述错误的发生。

关于docker - 创建带有身份验证的私有(private) Docker 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com