Docker 镜像加速器 - 八类仓库可用源与配置生成
Docker Hub、GHCR、Quay、MCR、K8s、GCR、Elastic、NVCR 八类镜像仓库的可用加速地址,按需生成 daemon.json 或 containerd 配置
The tool itself switches to English, but this long-form guide is currently written in Chinese only.
Docker 镜像加速器 - 八类仓库可用源与配置生成是什么
国内直连 Docker Hub 的 registry-1.docker.io 基本拉不动,要么超时,要么只剩几十 KB/s。常规解法是给 Docker 配一组国内镜像源,麻烦在于这些源会一个个失效,网上流传的列表往往半年就废掉一半,抄过来还得自己逐个试。同一个问题在 GHCR、Quay、MCR、K8s、GCR、Elastic、NVCR 上也存在,只是很少有人整理。这个页面持续检测八类仓库的镜像源,挑出此刻确实可用、且不需要登录的地址,Docker Hub 直接生成 daemon.json,其余七类给出改写后的镜像地址和 containerd 配置。
怎么用Docker 镜像加速器 - 八类仓库可用源与配置生成
- 打开页面就会自动取一次最新检测结果,顶部显示数据时间;数据每小时更新一次
- 在标签页里选仓库类型:Docker Hub、GHCR、Quay、MCR、K8s、GCR、Elastic、NVCR 各一页
- Docker Hub 页给出「推荐的 daemon.json」,地址已按实测延迟从小到大排好(延迟落在同一 100 毫秒档内时,检测结果更一致的排前面),要几个在右上角切 3 / 5 / 8
- 其余七类给出两段:一段是改写后的镜像地址前缀(把 ghcr.io 换成 ghcr.1ms.run 这种),一段是 containerd 的 mirrors 配置
- 在候选池里取消勾选不想要的源、或勾上别的备选,上面的输出会立刻跟着变;切换标签页时各自的选择会保留
- Docker Hub 点「复制配置」粘进 /etc/docker/daemon.json(Docker Desktop 在 设置 → Docker Engine),重启 Docker 后用 docker info 确认生效
示例
输入
在 Docker Hub 标签页选 5 个源,点「复制配置」输出
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.ixdev.cn",
"https://hub.rat.dev",
"https://docker.xuanyuan.me",
"https://docker.1panel.live"
]
}示例是某次检测的实际结果,具体地址以你打开页面时看到的为准。其他仓库类型复制到的是改写前缀或 containerd 配置,不是这段 JSON。
常见问题
配完之后拉取还是失败,或者报 401 unauthorized
先看报错里的域名。报的还是 registry-1.docker.io,说明配置没生效,检查文件路径、JSON 格式、Docker 是否真的重启过。报的是镜像源自己的域名加 401,说明这个源现在开始要求登录了,换一个即可。
GHCR、Quay 这些仓库怎么加速?
Docker 的 registry-mirrors 只服务 Docker Hub,官方没给其他仓库留口子。所以在对应标签页里拿到的结果有两种用法:一是拉取时直接改写镜像地址前缀,任何环境都能用;二是 K8s 节点在 containerd 的 config.toml 里按仓库配 registry.mirrors,这种还能填多个地址做回退。
这些镜像源为什么总在变?
它们大多是个人或小团队自费维护的,遇到流量暴涨、被滥用、备案或成本问题就会关停或改成限流。这也是为什么不能收藏一份列表用一整年,得看实时检测结果。
页面上的数据多久更新一次?
每小时更新一次,页面顶部显示这一批检测的时间。间隔拉长是为了不给这些免费公开的检测服务添负担,镜像源本身也不会一小时就变。
小提示
- registry-mirrors 只对 Docker Hub 生效,这是 Docker 官方明确的限制。把 ghcr.io 的加速地址写进 daemon.json 不会报错,但一点作用都没有 —— 所以这个页面把其他七类的输出单独做成改写地址和 containerd 配置
- 非 Docker Hub 的仓库在 Docker CLI 下没有全局镜像机制,只能改镜像地址:把 ghcr.io/owner/image:tag 写成 ghcr.1ms.run/owner/image:tag,镜像名和 tag 都不动
- K8s 节点跑 containerd 的话可以用 registry.mirrors 按仓库配置,而且 endpoint 是数组、能按顺序回退,这是非 Docker Hub 类型里唯一支持配置多个地址的用法
- 不是越多越好。Docker 按列表顺序逐个尝试,排在后面的源几乎用不到;第一个源变慢时它还要等超时才轮到下一个,总等待反而更长。3 到 5 个足够
- 「需登录」和「仅限内网」的源配进去等于没配:registry-mirrors 不带任何凭证,云厂商的内网地址在公网也连不上。这两类已从推荐里剔除,在「已排除」里能看到原因
- 手改 daemon.json 时注意它是严格 JSON:不能写注释、最后一个元素后面不能有逗号,错一个字符 Docker 会直接起不来