解决镜像拉取难题:DaoCloud 镜像同步项目实战指南
引言:镜像拉取的痛点与解决方案
你是否还在为国外镜像仓库(如 gcr.io)的拉取速度慢而烦恼?在国内网络环境下,开发者常常面临镜像下载耗时过长、甚至失败的问题,严重影响开发效率。本文将以 xinference 镜像为例,详细介绍如何使用 DaoCloud 开源的 public-image-mirror 项目解决这一痛点。通过本文,你将学习到:
- 如何利用 public-image-mirror 项目加速国外镜像的拉取
- 两种主要的镜像加速使用方法
- xinference 镜像的具体加速实践步骤
- 项目中提供的工具脚本及其使用方法
项目概述:public-image-mirror
public-image-mirror 是 DaoCloud 开源的镜像同步项目,旨在为国内用户提供国外镜像的加速服务。项目的核心目标是:
- 提供简洁有效的镜像加速方法
- 易于添加新的镜像,无需修改代码
- 保证同步的稳定可靠和实时性
项目的详细信息可以在 README.md 中找到。该项目仅是源镜像仓库(Registry)的 Mirror,所有 hash(sha256) 均和源保持一致,采用懒加载机制。由于缓存的存在,可能存在 1 小时的延迟。
镜像加速使用方法
public-image-mirror 提供了两种主要的镜像加速使用方法:增加前缀和前缀替换。
方法一:增加前缀(推荐)
这种方法是在原始镜像名称前添加 "m.daocloud.io/" 前缀。例如,将 "docker.io/library/busybox" 转换为 "m.daocloud.io/docker.io/library/busybox"。
docker.io/library/busybox
|
V
m.daocloud.io/docker.io/library/busybox
方法二:前缀替换(不推荐)
这种方法是将镜像仓库的域名替换为项目提供的加速域名。例如,将 "docker.io/library/busybox" 转换为 "docker.m.daocloud.io/library/busybox"。
项目支持多种镜像仓库的前缀替换,完整列表可以在 README.md 中查看。以下是一些常用的替换规则:
| 源站 | 替换为 | 备注 |
|---|---|---|
| docker.io | docker.m.daocloud.io | |
| gcr.io | gcr.m.daocloud.io | |
| ghcr.io | ghcr.m.daocloud.io | |
| k8s.gcr.io | k8s-gcr.m.daocloud.io | k8s.gcr.io 已被迁移到 registry.k8s.io |
| registry.k8s.io | k8s.m.daocloud.io |
xinference 镜像加速实践
xinference 是一个功能强大的开源推理框架,支持多种大型语言模型。由于其官方镜像托管在国外,国内用户拉取时可能会遇到速度慢的问题。下面我们将介绍如何使用 public-image-mirror 加速 xinference 镜像的拉取。
确认 xinference 镜像在白名单中
首先,我们需要确认 xinference 镜像是否在项目的白名单中。查看 allows.txt 文件,我们可以找到以下条目:
docker.io/xprobe/xinference
这表明 xinference 镜像已经被纳入加速范围。
使用增加前缀方法拉取 xinference 镜像
按照推荐的增加前缀方法,我们可以使用以下命令拉取 xinference 镜像:
docker pull m.daocloud.io/docker.io/xprobe/xinference
使用该镜像运行容器
拉取完成后,我们可以使用以下命令运行 xinference 容器:
docker run -d -p 9997:9997 --name xinference m.daocloud.io/docker.io/xprobe/xinference
项目工具脚本介绍
public-image-mirror 项目在 hack/ 目录下提供了多个实用的工具脚本,用于辅助镜像的同步、验证和管理。
辅助函数脚本:helper.sh
hack/helper.sh 提供了一些常用的辅助函数,如替换域名、获取源列表等。例如,helper::replace_domain 函数用于在镜像名称前添加加速前缀:
function helper::replace_domain() {
local domain="${1}"
echo "${DOMAIN}/${domain}"
}
镜像验证脚本:verify-image.sh
hack/verify-image.sh 用于验证镜像是否可以被正确加速。使用方法如下:
./hack/verify-image.sh docker.io/xprobe/xinference
镜像同步脚本:merge-mirror.sh
hack/merge-mirror.sh 用于合并镜像同步配置。这个脚本帮助维护人员更方便地管理需要同步的镜像列表。
常见问题解决
镜像拉取时提示未找到
如果在拉取镜像时提示未找到,可能是该镜像尚未被缓存。此时,系统会自动将该镜像添加到同步队列。你可以在 同步队列状态页面 查看同步进度。
如何添加新的镜像到加速列表
如果你需要的镜像不在白名单中,可以通过提交 Issue 来请求添加。项目地址是:https://github.com/DaoCloud/public-image-mirror/issues
总结与展望
通过 public-image-mirror 项目,我们可以轻松解决国外镜像在国内拉取速度慢的问题。本文以 xinference 镜像为例,详细介绍了项目的使用方法和实践步骤。
项目团队持续维护和更新镜像列表,确保用户能够及时获取所需的镜像。未来,项目计划添加内容检测功能,进一步提高服务的安全性和可靠性。
如果你觉得这个项目对你有帮助,欢迎给项目点赞、收藏,并关注项目的最新动态。如果你有任何问题或建议,也欢迎通过 Issue 与项目团队交流。
附录:常用镜像加速命令参考
| 镜像名称 | 官方地址 | 加速地址 |
|---|---|---|
| Nginx | docker.io/library/nginx | m.daocloud.io/docker.io/library/nginx |
| MySQL | docker.io/library/mysql | m.daocloud.io/docker.io/library/mysql |
| Xinference | docker.io/xprobe/xinference | m.daocloud.io/docker.io/xprobe/xinference |
| Ollama | docker.io/ollama/ollama | m.daocloud.io/docker.io/ollama/ollama |
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



