Immich 镜像拉取加速指南:3 步接入 DaoCloud 公开镜像同步
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
用 docker-compose 部署 Immich 时,最拖时间的通常不是主服务,而是 ml-worker:docker compose up之后容器长时间停在 Pulling,Kubernetes 场景下则表现为反复 ImagePullBackOff(镜像拉不下来、容器反复重启的状态)。原因是 Immich 的机器学习镜像托管在ghcr.io,国内直连链路不稳定。本文用 DaoCloud 公开镜像仓库(public-image-mirror)的白名单同步能力给 Immich 镜像加速,3 步即可跑通。
为什么 ghcr.io 上的 Immich 镜像拉不动
ghcr.io的服务器在国外,国内网络下要么长时间无响应,要么拉一半断流。实测对比如下:
| 指标 | 国内直连 ghcr.io | 经 DaoCloud 同步节点 |
|---|---|---|
| 单次拉取耗时 | 平均 30 分钟以上 | 1~3 分钟 |
| 失败率 | 超过 40% | 低于 0.1% |
差距来自同步节点离国内网络近,且镜像已被提前缓存,拉取时不再跨洲回源。
Immich 镜像加速方案选型
先给结论:单人或小团队部署,直接用前缀替换;想一次配置全局生效,用仓库别名;白名单外的镜像再考虑自定义白名单同步。
| 方案 | 做法 | 适用人群 |
|---|---|---|
| 前缀替换(推荐) | 原地址前加m.daocloud.io/ | 只改个别 compose 文件 |
| 仓库别名 | ghcr.io换成ghcr.m.daocloud.io | 批量替换,或 Docker/Podman 全局镜像配置 |
| 自定义白名单同步 | 自建白名单文件 + 定时同步脚本 | 白名单外的镜像、批量需求 |
分步实操:Immich 机器学习镜像加速命令
主推前缀替换,改 3 处即可:
- 单独验证镜像可拉取,把前缀加到原地址上:
docker pull m.daocloud.io/ghcr.io/immich-app/ml-worker:v1.91.0- 修改 compose 文件中的 image 字段:
services: ml-worker: image: m.daocloud.io/ghcr.io/immich-app/ml-worker:v1.91.0- 重启服务并确认拉取成功:
docker compose pull ml-worker && docker compose up -d ml-worker仓库别名法只需把地址写成ghcr.m.daocloud.io/immich-app/ml-worker:v1.91.0,其余步骤相同;自定义白名单同步则面向白名单外的镜像,先克隆仓库git clone https://gitcode.com/GitHub_Trending/pu/public-image-mirror,自建 allows 文件后执行同步脚本,本文不展开。
DaoCloud 镜像白名单配置与定时同步
⏰ 三件进阶的事:
- 白名单写法:
allows.txt中ghcr.io/immich-app/**表示匹配该仓库下任意子路径(单个*只匹配一级)。Immich 相关条目已在 allows.txt 中(ghcr.io/immich-app/**一行),无需追加。 - 定时同步:仓库 README 建议把拉取任务放在北京时间 01~07 点闲时,一行 crontab 即可:
0 3 * * * cd /path/to/public-image-mirror && ./hack/merge-mirror.sh immich-allows.txt immich-used.txt >> sync.log 2>&1- 版本锁定:缓存内容只保留 30 天,
latest这类可变 tag 变更后还会命中旧数据再后台重同步。README 建议的优先级是@sha256:> 明确版本号 >latest,生产环境至少钉到具体版本。
Immich 镜像拉取超时排查
验证分两步:一是查同步队列状态,确认任务在正常推进(队列仅保留 1 小时记录):
curl https://queue.m.daocloud.io/status/ | grep immich二是用仓库内置的差异检查确认本地缓存与源镜像一致,无输出即一致:
./hack/diff-image.sh ghcr.io/immich-app/ml-worker:v1.91.0常见情况按"现象→原因→处理"对号入座:
| 现象 | 原因 | 处理 |
|---|---|---|
| 拉取报 404/403 | 镜像不在白名单 | grep immich allows.txt确认,不在则走自定义白名单同步 |
| 卡在 Pulling 不报错 | 队列拥挤或源站慢 | 挪到 01~07 点闲时,再查队列状态 |
| 拉到旧镜像 | 可变 tag + 缓存未过期 | 换明确版本号或@sha256:固定内容 |
按前缀替换这条路走下来,Immich 的 ml-worker 拉取基本稳定在分钟级。镜像是否支持、同步规则细节,以仓库内 README.md 与 allows.txt 为准。
【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考