You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Docker将非docker.io镜像拉取请求指向私有镜像缓存

Docker按源仓库配置镜像拉取代理的实现方案

Docker Engine 从20.10版本开始原生支持多仓库独立代理缓存配置,不需要替换运行时即可实现quay.io等第三方仓库的自动转发,具体配置方法如下:


原生配置方案(推荐,适用于Docker 20.10及以上版本)

你之前配置docker.io代理时使用的registry-mirrors字段是旧版本仅针对默认仓库(Docker Hub)的配置项,新版本新增的registries配置块可以为任意上游镜像仓库指定专属代理地址:

  1. 编辑Docker守护进程配置文件,默认路径为/etc/docker/daemon.json
  2. 按如下格式补充配置(保留你之前已经配置好的docker.io代理即可):
{
  "registry-mirrors": ["https://docker.io.mylocalartifacts.com"],
  "registries": {
    "quay.io": {
      "mirrors": ["https://quay.io.mylocalartifacts.com"]
    }
  }
}

如果后续需要新增gcr.io、ghcr.io等其他仓库的缓存代理,直接在registries块下按相同格式追加对应仓库和代理地址即可。
3. 保存配置后执行以下命令重启Docker生效:

systemctl daemon-reload
systemctl restart docker

配置生效后,直接执行docker pull quay.io/<镜像名>:<标签>时,Docker会自动将请求转发到你配置的quay.io缓存地址,不需要手动修改镜像前缀。

注意事项:

  • 如果你的制品服务器使用自签名HTTPS证书,需要提前将CA根证书放置到/etc/docker/certs.d/quay.io.mylocalartifacts.com/目录下,否则会出现x509证书不信任的拉取错误。
  • 配置完成后可以执行docker info命令,在返回结果的Registry Mirrors相关段落确认所有代理规则已经正常加载。

低版本兼容方案(适用于Docker 20.10以前版本)

如果你的集群使用的Docker版本低于20.10,不支持registries配置块,可以通过透明代理的方式实现无感知转发:

  • 调整集群内部DNS(比如Kubernetes集群的CoreDNS服务),将quay.io域名直接解析到你的制品服务器IP
  • 在制品服务器上配置443端口的SNI转发规则,识别到Host为quay.io的请求时,自动走本地缓存逻辑响应镜像拉取请求
  • 该方案完全不需要修改Docker侧的任何配置,拉取逻辑对Docker引擎透明,缺点是需要调整DNS规则和制品服务器的代理配置,维护成本略高于原生配置方案。

不建议在每个节点通过修改/etc/hosts的方式绑定域名,后续制品服务器地址变更时需要逐节点修改,运维成本极高。

内容的提问来源于stack exchange,提问作者Jean-Pascal J.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:48:25