仅限 Docker Registry pull/push 443

仅限 Docker Registry pull/push 443

我已经设置了一个 Docker Registry(端口 5000),然后可以通过 https(端口 443)通过反向代理(HAproxy)访问互联网。

我的反向代理不是监听端口 80(由于各种原因)-只有 443。

但是,当我尝试将图像拉/推到注册表时,出现此错误:

> docker push dockerreg.mydomain.tld/foo/bar:tag
The push refers to repository [dockerreg.mydomain.tld/foo/bar]
67e5bc702bd3: Layer already exists
1ee6a18298af: Layer already exists
0d8d066a4449: Layer already exists
....
402111a9b517: Layer already exists
5be968ab3b04: Layer already exists
b8d33b7d28fe: Layer already exists
Patch http://dockerreg.mydomain.tld/v2/foo/bar/blobs/uploads/840a9fc2-5c10-4c0e-b674-82f76c3794a3?_state=vcTZPbOrQmhcKwilCyutNGwVpFjvWigJCApZHA834757Ik5hbWUiOiJmb3Rvd2V0dGVyL2NsZWFuIiwiVVVJRCI6Ijg0MGE5ZmMyLTVjMTAtNGMwZS1iNjc0LTgyZjc2YzM3OTRhMyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wOC0xNFQyMTozODo1Mi42MzgxNjY5NTdaIn0%3D:
dial tcp 1.2.3.4:80: i/o timeout

因此显然它尝试通过 http/80 访问注册表

我能够使用 docker login 命令,https://dockerreg....但 docker pull/push 命令无法通过 https:// 运行

有没有什么办法可以访问我的docker注册表,而无需在我的反向代理的80端口上进行https重定向?

答案1

您需要设置 httphost选项:https://docs.docker.com/registry/configuration/#http

注册表的外部可访问地址的完全限定 URL。如果存在,则在创建生成的 URL 时使用它。否则,这些 URL 源自客户端请求。

可以在注入注册表的配置文件中设置,也可以使用环境变量进行设置REGISTRY_HTTP_HOST

相关内容