docker registry-mirrors 不用于 fqdn 镜像

docker registry-mirrors 不用于 fqdn 镜像

我有一个位于防火墙后面的 docker 服务器,所以我无法从内部服务器之外的任何注册表直接从中提取图像。

我已经配置了注册镜像(registry-1.docker.iomcr.microsoft.com),如下文档

我的daemon.json样子是:

{
  "registry-mirrors": [
          "https://registry_1_docker_io.example.com",
          "https://mcr_microsoft_com.example.com"
  ] 
}

我可以通过执行以下命令从 docker hub 成功提取镜像:

$ docker pull nginx:1
1: Pulling from library/nginx
....
Status: Downloaded newer image for nginx:1

我的问题是我无法从微软注册表中提取图像

# docker pull mcr.microsoft.com/mssql/server:2017-latest
Error response from daemon: Get "https://mcr.microsoft.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

docker 尝试直接连接到mcr我的镜像并忽略它。如果我使用短镜像名称(mssql/server:2017-latest而不是mcr.microsoft.com/mssql/server:2017-latest),它就可以工作,但如果两者上的标签相同,它可能会从 docker hub 而不是微软的 mcr 获取镜像。

此外,如果我查看日志,docker 会按顺序尝试图像的所有代理,因此可能会出现从错误的存储库获取图像的情况。

有什么方法可以将镜像标记为特定注册表的镜像?

答案1

有什么方法可以将镜像标记为特定注册表的镜像?

不,这是 Docker 引擎的限制,registry-mirrors仅适用于 Docker Hub。您可以关注问题 18818更多细节。

当 docker 在不久的将来将镜像处理从 docker 交换到 containerd 时,这种情况可能会发生变化,因为 containerd 具有处理镜像的不同配置。

相关内容