gpt4 book ai didi

docker 在应该使用 v2 时使用了 v1 注册表 api

转载 作者:行者123 更新时间:2023-12-04 21:12:53 24 4
gpt4 key购买 nike

我正在尝试使用自托管的 docker 注册表 v2。我应该能够推送一个 docker 镜像,它在运行 registry v2 容器的主机服务器(coreos)上本地工作。但是,在单独的机器(也是 coreos,相同版本)上,当我尝试推送到注册表时,它尝试推送到 v1,出现此错误:

Error response from daemon: v1 ping attempt failed with error: Get 
https://172.22.22.11:5000/v1/_ping: dial tcp 172.22.22.11:5000: i/o timeout.
If this private registry supports only HTTP or HTTPS with an unknown CA
certificate, please add `--insecure-registry 172.22.22.11:5000` to the
daemon's arguments. In the case of HTTPS, if you have access to the registry's
CA certificate, no need for the flag; simply place the CA certificate at
/etc/docker/certs.d/172.22.22.11:5000/ca.crt

两台机器的 docker 可执行文件都是 v1.6.2。为什么一个有效并且正在插入到 v2 而另一个是 v1?

这是注册表的存储库: https://github.com/docker/distribution

最佳答案

您需要先保护注册表,然后才能远程访问它,或者明确允许所有 Docker 守护程序访问不安全的注册表。

要保护注册表,最简单的选择是为您的服务器购买 SSL 证书,但您也可以对证书进行自签名并分发给客户端。

要允许不安全的访问,请添加参数 --insecure-registry myregistrydomain.com:5000所有需要访问注册表的守护进程。 (显然用你的替换域名和端口)。

完整说明(包括错误消息示例)位于:https://github.com/docker/distribution/blob/master/docs/deploying.md

关于错误消息,我猜Docker首先尝试使用v2,由于安全问题而失败,然后尝试v1并再次失败。

关于docker 在应该使用 v2 时使用了 v1 注册表 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806066/

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