docker在使用v2时正在使用v1注册表api

Chr*_*ski 5 docker coreos docker-registry

我正在尝试使用自托管的docker注册表v2.我应该能够推送一个docker镜像,它在运行注册表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 
Run Code Online (Sandbox Code Playgroud)

两台机器的docker可执行文件都是v1.6.2.为什么一个工作并推动v2但另一个是v1?

这是注册表的回购:https://github.com/docker/distribution

Adr*_*uat 2

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

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

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

完整的说明(包括错误消息的示例)可在以下位置找到: https: //github.com/docker/distribution/blob/master/docs/deploying.md

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