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 docker
Rootless 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:latest
2.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:alpine
B. 直接用镜像域名拉取(应急/验证)
无需修改系统配置,可立刻验证镜像站连通性:
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明文镜像加入生产环境,除非在可信内网且有明确需求。

1224

被折叠的 条评论
为什么被折叠?



