Docker通过daemon.json中registry-mirrors数组实现多源备份:按顺序尝试各https镜像源,首个失败即fallback至下一个,仅对docker.io生效,非负载均衡,需避免失效地址拖慢体验。
通过 daemon.json 配置多个镜像加速源并实现“备份”效果,本质是利用 docker 守护进程对 registry-mirrors 数组的支持——docker 会按顺序尝试每个镜像源,遇到不可用时自动 fallback 到下一个,从而达到容错和备用目的。
确认 daemon.json 支持 registry-mirrors 数组
Docker 17.06+ 原生支持在 /etc/docker/daemon.json 中配置多个镜像地址,以数组形式写入 registry-mirrors 字段。Docker 启动时加载该配置,并在拉取镜像时按顺序尝试每个源(仅对未配置的 registry,默认走 docker.io)。
- 必须是合法 JSON 格式,末尾不能有多余逗号
- 每个镜像地址需以
https://开头(不支持 http) - 不支持“主备切换策略”或健康检查,纯顺序尝试(第一个失败才试第二个)
配置多个加速源(示例)
编辑 /etc/docker/daemon.json,填入多个国内常用加速地址:
保存后重载配置:
sudo systemctl daemon-reloadsudo systemctl restart docker- 验证:运行
docker info | grep "Registry Mirrors" -A 1,确认列表已生效
注意事项与常见问题
这种“多源备份”有明确边界,不是负载均衡,也不保证实时可用性:
- 仅对
docker.io(即默认 registry)生效;自定义 registry(如my-registry.example.com)需单独配置insecure-registries或使用registry-mirrors的子路径规则(不推荐) - 如果第一个镜像源网络可达但返回 404 或 503,Docker 仍视为“失败”,会继续尝试下一个;但如果卡在 TLS 握手或 DNS 超时,可能整体变慢
- 避免混入已失效或响应极慢的地址,否则会拖累首次拉取体验
- 阿里云、腾讯云等厂商镜像站需登录容器镜像服务控制台开通,部分地址已弃用(如旧版
https://docker-cn.mirrors.aliyuncs.com),建议查官网最新地址
进阶:配合私有 registry 使用
若同时使用私有仓库(如 Harbor),可保留 registry-mirrors 用于公共镜像加速,再通过 insecure-registries 或证书信任方式单独对接内网 registry:
此时:docker pull nginx 走加速源,docker pull harbor.internal:8080/myapp 直连私有库,互不影响。


















