
Docker 镜像拉取卡住一次配置、简单快速完成镜像加速完整教程【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror你执行docker pull gcr.io/某个镜像:1.0终端长时间停在 12% 一动不动——这是境外镜像源的网络壁垒不是 Docker 的问题。public-image-mirrorDaoCloud 维护提供的就是公开的 Docker 镜像加速与镜像同步服务把拉取指向m.daocloud.io它替你从境外源仓库同步镜像你再像平常一样拉取。public-image-mirror 是什么专治 docker pull 慢的一个服务它解决的是很具体的问题gcr.io、quay.io、ghcr.io 等境外仓库的镜像在国内拉取慢、不稳定。它是纯粹的镜像不修改镜像内容所有 sha256 哈希与源仓库一致采用懒加载机制按需才同步只同步你实际拉的那个镜像不整库搬运。适合没有自建镜像集群的个人和小团队零成本改一下拉取命令里的地址就行。缓存的工作方式未命中到同步完成的完整链路请求到达m.daocloud.io后第一步永远是查本地缓存命中就直接交付未命中时服务自动创建镜像同步任务并排队后台 worker 去境外源仓库拉取写入本地缓存后才交付给你。整个过程对你透明——你只会感觉第一次拉得慢一点后面就快了。几个影响你使用体验的缓存细节缓存内容只保留 30 天过期后需要重新同步manifest镜像元数据内存缓存 1 小时所以上游latest被更新后你大约要等 1 小时才能拉到新的生产环境建议尽量用sha256:镜像内容哈希相当于永不改变的版本号或明确版本的 tag 固定版本。想看核心逻辑同步 worker 的本质是两步先从源仓库拉下目标镜像再推到镜像地址哈希全程不变。自己搭迷你版的话核心就是skopeo copy docker://源地址 docker://目标地址一个调用成功返回目标地址、失败输出 stderr15 行代码就够。上手daemon.json、前缀、域名替换三种配置daemon.json 一行全局加速一次配置长期生效在 Docker 守护进程配置文件/etc/docker/daemon.json中加入{ registry-mirrors: [ https://docker.m.daocloud.io ] }然后重载并重启systemctl daemon-reload systemctl restart docker预期效果✅此后所有docker pull library/xxx自动走docker.m.daocloud.io任何命令、CI 脚本都不用改。常见坑这一项只对 docker.io 源站生效不要把 gcr.io 等其他源站也指给它——那些用下面两种方式。前缀添加一次性的最快试法在原地址前加m.daocloud.io/前缀对任何白名单内的仓库都成立docker pull m.daocloud.io/gcr.io/google-containers/pause:3.6Kubernetes 场景同理kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1预期效果立即生效不改任何配置。常见坑latest是可变 tag变更后会先响应旧数据、再由后台重新同步能用明确 tag 或sha256:就别用latest。用 kubeadm 部署集群时把配置里的imageRepository指向k8s.m.daocloud.io即可。域名替换常用源站有专属加速域名常用源站都有专属域名地址更短源站加速域名docker.iodocker.m.daocloud.iogcr.iogcr.m.daocloud.ioghcr.ioghcr.m.daocloud.ioquay.ioquay.m.daocloud.iomcr.microsoft.commcr.m.daocloud.ionvcr.ionvcr.m.daocloud.ioregistry.k8s.iok8s.m.daocloud.iodocker.elastic.coelastic.m.daocloud.iodocker pull docker.m.daocloud.io/library/nginx:alpine预期效果docker pull k8s.m.daocloud.io/pause:3.9直接可用不用记完整的源站路径。常见坑k8s.gcr.io已迁移到registry.k8s.io域名替换是人工配置的个别新源站可能还没有对应域名那就退回前缀法。同步失败排查allows.txt 到手动预热的三步清单拉取失败或长时间挂起时按这个顺序查1. 查白名单 allows.txt❌只有白名单内的镜像才会被同步。本地有仓库的话grep gcr.io/google-containers allows.txt没有仓库的话先git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror再执行上面这条命令。名单里有两种通配层级repo/*放行整个仓库repo/**放行整个域本地验证可以跑 hack/verify-allows.sh 脚本。不在名单里是失败的第一常见原因可以去项目 Issue 区提需求或私有部署后自己加前缀。2. 看同步队列状态首次拉取走的是懒加载后台同步可能需要几分钟。队列状态页queue.m.daocloud.io/status/可以查任务进度但它只保留 1 小时的记录触发后尽快去看。3. 手动预热生产环境要用的镜像提前在闲时官方建议北京时间凌晨 01-07 点相对不拥挤拉一遍docker pull m.daocloud.io/gcr.io/google-containers/pause:3.6缓存一旦建立30 天内后续拉取直接命中即使部署时正赶上队列繁忙也不用干等。进阶这个镜像同步还能延伸的三个方向内网缓存私有部署按 docs/local-cache/ 的步骤在内网起一个 registry把 proxy 指向m.daocloud.io给整个集群缓存常用镜像显著降低外网依赖。队列调优用sha256:固定版本、把大批量拉取放闲时避开高峰排队也避免可变 tag 反复触发同步。监控告警定期看队列状态页的队列长度与同步成功率配合官方状态监控页想自动化的话让 CI 在发布前把所有镜像预先拉一遍等于给缓存做预热。把地址写进daemon.json之后后续所有拉取都会静默走这套镜像同步服务遇到问题照上面三步清单定位即可更多细节看 README.md 和 hack/ 里的维护脚本。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考