7牛AIPPT在版本发布过程中,常受困于Docker镜像拉取失败的问题,这一难题严重影响了发布效率。经过团队不懈探索与验证,我们整理出一批公共可用的Docker代理资源,结合不同环境的配置方法与使用技巧,形成这份实用指南,希望能为有类似困扰的开发者提供帮助。
一、快速结论(推荐源 + 备选源)
优先推荐(就近 + 稳定优先)
https://docker.1ms.run
https://docker-0.unsee.tech
其他备选(用户反馈状态均“正常”)
https://docker.m.daocloud.io
https://ccr.ccs.tencentyun.com
https://hub.xdark.top
https://dhub.kubesre.xyz
https://docker.kejilion.pro
https://docker.xuanyuan.me(入口:https://xuanyuan.cloud)
https://docker.hlmirror.com
https://run-docker.cn
https://docker.sunzishaokao.com
https://image.cloudlayer.icu
https://docker.tbedu.top
https://hub.crdz.gq
https://docker.melikeme.cn
使用提示
以上多为DockerHub反代/镜像,用于docker.io加速。
建议同时配置2–4个镜像,并保留官方回源https://registry-1.docker.io。
访问效果最佳的镜像放在最前;不要在URL末尾加斜杠。
二、标准配置:多环境适配方案
2.1 Docker Desktop(Windows / macOS)
路径:Settings → Docker Engine
将配置替换/合并为:
点击Apply & Restart
验证:终端执行对应命令
Windows:docker info | findstr /i "Registry Mirrors"
macOS:docker info | grep -A 3 "Registry Mirrors"
2.2 Linux(dockerd / systemd)
编辑配置文件:/etc/docker/daemon.json
{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker-0.unsee.tech", "https://docker.m.daocloud.io" ], "live-restore": true, "features": { "buildkit": true } }重启服务:
sudo systemctl daemon-reload sudo systemctl restart dockerRootless Docker:将同样配置放到~/.config/docker/daemon.json,再执行systemctl --user restart docker
2.3 containerd / k3s / nerdctl
生成默认配置(若无):
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml >/dev/null编辑/etc/containerd/config.toml:
[plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = [ "https://docker.1ms.run", "https://docker-0.unsee.tech", "https://registry-1.docker.io" ]重启服务&验证:
sudo systemctl restart containerd crictl pull docker.io/library/busybox:latest # 或 nerdctl --namespace k8s.io pull docker.io/library/busybox:latest2.4 独立BuildKit(buildkitd)
编辑配置文件:/etc/buildkit/buildkitd.toml
[registry."docker.io"] mirrors = ["https://docker.1ms.run","https://docker-0.unsee.tech"]三、应急拉取与原理说明
A. 守护进程镜像(推荐)
配置好mirrors后,仍按原名拉取即可,失败会自动回退:
docker pull docker.io/library/nginx:alpineB. 直接用镜像域名拉取(应急/验证)
无需修改系统配置,可立刻验证镜像站连通性:
docker pull docker.1ms.run/library/nginx:alpine注:多数站点路径仍需加library/前缀;规则可能略有不同,以站点说明为准。
四、测速脚本与使用建议
轻量连通/响应测试(Linux bash)
通过访问/v2/与轻量交互评估连通性;真实下载速度仍受后端缓存/网络波动影响。
#!/usr/bin/env bash set -euo pipefail MIRRORS=( "https://docker.1ms.run" "https://docker-0.unsee.tech" "https://docker.m.daocloud.io" "https://ccr.ccs.tencentyun.com" "https://hub.xdark.top" "https://dhub.kubesre.xyz" "https://docker.kejilion.pro" "https://docker.xuanyuan.me" "https://docker.hlmirror.com" "https://run-docker.cn" "https://docker.sunzishaokao.com" "https://image.cloudlayer.icu" "https://docker.tbedu.top" "https://hub.crdz.gq" "https://docker.melikeme.cn" ) printf "%-34s %-10s %-s\n" "MIRROR" "V2(ms)" "NOTES" for m in "${MIRRORS[@]}"; do t=$(curl -o /dev/null -s -w "%{time_total}" "${m}/v2/" || echo "fail") note="" if [[ "$t" == "fail" ]]; then note="connect error" else t=$(awk -v n="$t" 'BEGIN{printf "%.0f", n*1000}') fi printf "%-34s %-10s %-s\n" "$m" "$t" "$note" done最佳实践
配置2–4个镜像 + 官方回源,获取“可用性冗余”。
仅用于公共镜像;私有镜像建议走自建/官方/云厂商私有仓。
遇到429错误时,切换镜像 + 使用docker login(只对官方域名使用凭据)。
选出RTT(往返时间)最低的镜像位列首位;跨地域部署时可分组配置。
五、常见问题(FAQ)与排障清单
Q1:配置后依旧慢或TLS报错?
确认使用HTTPS协议且URL无尾斜杠;同步系统时间并更新CA证书。
公司代理/防火墙可能存在SSL拦截,可尝试更换网络或改用其他镜像站。
直接用镜像域名拉取测试站点可用性,排除Docker自身配置问题。
Q2:频繁出现429 / Too Many Requests?
更换镜像站或增加备选源;对官方域名执行docker login操作,降低匿名访问限速影响。
Q3:K8s节点拉取超时?
每个节点都需在containerd层配置mirrors,并滚动重启containerd/kubelet服务。
排障清单
执行docker info能看到配置的Registry Mirrors
curl https://<mirror>/v2/ 返回200/401/403状态码
DNS可正常解析镜像域名(必要时更换为公共DNS)
配置中保留https://registry-1.docker.io作为兜底选项
系统时间、CA证书无异常,网络无拦截情况
六、一页抄作业(可直接粘贴)
dockerd:/etc/docker/daemon.json
{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker-0.unsee.tech", "https://docker.m.daocloud.io" ], "features": { "buildkit": true } }containerd:/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://docker.1ms.run","https://docker-0.unsee.tech","https://registry-1.docker.io"]Docker Desktop:Settings → Docker Engine
{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker-0.unsee.tech", "https://docker.m.daocloud.io" ], "features": { "buildkit": true } }七、合规与安全提醒
第三方镜像站仅用于拉取公共镜像;私有/机密镜像请使用企业自建Harbor、云厂商镜像服务或官方私有库。
切勿将企业凭据/令牌用于第三方域名。
尽量开启签名/校验(Docker Content Trust/Notary)以增强供应链安全。
切勿将HTTP明文镜像加入生产环境,除非在可信内网且有明确需求。