1. 当前位置: 网站首页 >  NAS >  NAS上Docker镜像拉不下来怎么办?装个Immich卡了37分钟超时三次,能试的路我全试完,稳的就这两条

NAS上Docker镜像拉不下来怎么办?装个Immich卡了37分钟超时三次,能试的路我全试完,稳的就这两条

NAS上Docker镜像拉取超时排查:公共加速器、手动save load搬运、自建中转仓库三条路对比

上个月想在飞牛上给媳妇装个Immich管照片,应用中心里点安装,进度圈转了37分钟,最后弹一行红字:timeout。重试第二次,换了台容器里的Jellyfin镜像,这次更干脆,两分钟直接报TLS handshake timeout。机器没坏、网没断、内网速度好得很,就是镜像拉不下来。那天晚上我从八点折腾到十二点半,把能搜到的法子全试了一遍,这篇就是那份踩坑记录——先说结论:网上教的换加速器这条路,2026年能走通的概率已经很低了,别在那上面耗时间。

先分清你卡在哪一步,别药不对症

转圈超时不只有一种。我后来学会先看一眼报错最后一行,卡的位置不一样,病根完全不同:

  • pull timeout、TLS handshake timeout、EOF:这是镜像仓库连不上,网络层的事,本篇主要讲这个。
  • manifest unknown、tag not found:镜像名或标签写错了,检查你抄的命令里有没有把latest拼成ltest。
  • no space left on device:盘满了,先去清理旧镜像,我那台4T的飞牛曾被人塞了11个G的悬空镜像。
  • 拉取成功但容器起不来:那是另一码事,配置、端口、挂载的问题,我之前在容器起不来排查那篇里写过,别在这儿瞎耗。

Immich那次我犯的第一个错就是没看报错。飞牛界面里只有一行timeout,我还以为是NAS性能不行,差点去后台重启系统。后来SSH进去手动敲了一遍命令才看清,是TLS握手就没完成——连仓库的门都没敲开,跟家里那台N100一点关系没有。

换加速器这条路,为什么越来越不灵

搜「docker pull 超时」,十篇文章九篇让你改daemon.json加registry-mirrors,再贴一串加速器地址。这个法子本身没错,错在那些地址的保质期。我自己的经历:2024年还能用的几个大学源和公益源,到2025年接连关闭;2025年中又倒了一批;到我装Immich这晚,能搜到的教程里贴的地址,挨个测过去十个有八个已经不响应。

原因不复杂,Docker Hub在国内直连本就时断时续,公共加速器本质是有人自费搭了条中转通道,用的人一多带宽扛不住,或者干脆收到关停通知。所以你看加速器地址这东西,教程写成那天是活的,你看到那天未必。我吃过这个亏:照着一篇2025年初的帖子配了三个源,重启Docker服务,结果一个都不通,白白烧掉四十分钟。

但加速器这条路不是完全放弃。关键不是抄地址,是学会先测再配。一条命令的事:

curl -s -o /dev/null -w "%{http_code} %{time_total}s" https://候选地址/v2/

返回200或者401(401是正常的,仓库要求认证,但说明这个通道活着)都算能用,返回000、超时几秒的,直接跳过。我装Immich那晚后来测通了两个源,配上之后拉镜像确实动起来了,速度大概2MB/s,能忍。但我知道这法子的天花板:下个月这两个源挂了,我又得重来一遍。所以后面两条路才是我想安利的。

笨但极稳的路:手动搬运镜像

这是我最后稳定下来的做法之一。思路土得很:家里拉不动,就用能上网的电脑拉,再把文件搬回NAS。

我书房那台Windows电脑挂着代理,Docker Desktop装好,pull毫无压力:

docker pull immich-app/immich-server:release docker save immich-app/immich-server:release -o immich.tar

docker save出来的tar文件,Immich的server镜像1.2个G,走内网SMB拷到NAS上,再SSH进去加载:

docker load -i immich.tar

加载完docker images里就有这个镜像了,回到飞牛界面创建容器,一切照旧。整套流程第一次跑会觉得啰嗦,第二次就顺手了,37分钟转圈的事,6分钟解决。唯一的麻烦是Immich这种一套好几个容器的应用,得挨个搬,机器翻译、ML这些组件加起来五个包,我那晚搬了三轮。

还有个细节踩过才知道:save的时候镜像名要写全,包含仓库名和tag,load回去名字才对得上。要是pull的时候用了简写,load回来会变成没有仓库名的悬空镜像,创建容器时界面里搜不到,还得docker tag补一次名字。

一劳永逸的路:自己的中转仓库

搬运法有个残留问题:换台NAS、重装次系统、或者容器要升级(对,容器升级一样要拉新镜像)就得重搬一遍。后来我把方案升级成了自己的中转仓库,用阿里云的容器镜像服务个人版,免费。

流程是这样的:在电脑上pull下来,push到我的个人仓库,NAS的daemon.json里把这个仓库配成可信地址,以后NAS直接从我自己的仓库拉,走的是阿里云国内节点,速度稳定,跟公共加速器比,这是自己名下的通道,不存在哪天突然被人关掉。

docker pull immich-app/immich-server:release docker tag immich-app/immich-server:release registry.cn-hangzhou.aliyuncs.com/我的命名空间/immich-server:release docker push registry.cn-hangzhou.aliyuncs.com/我的命名空间/immich-server:release

NAS那边pull的时候用自己仓库的地址,秒连。个人版有个限制是命名空间下仓库数量和部分功能,家用完全够,我把常用的十几个镜像都转存了一遍,花了半个晚上,从此再没管过加速器死活。我表弟的群晖DS920+上个月装Home Assistant,同样卡拉镜像,我把这套搬过去,十分钟搞定,他说早知道不去搜那些教程了。

配置生效要动Docker服务的配置文件,飞牛和群晖的位置不一样,这也是个坑:

系统配置文件位置改完怎么生效
飞牛fnOS/etc/docker/daemon.jsonsystemctl restart docker(在跑的容器会重启,挑半夜)
群晖DSMDocker套件GUI里直接配,或/var/packages/ContainerManager/etc/dockerd.json套件里停用再启用Docker

改配置前先确认json格式没写坏,少个逗号Docker服务起不来,所有容器全趴窝。我第一次改就把insecure-registries的方括号弄丢了,好在SSH还连着,把备份的文件抄回去才救活。改任何系统配置前,cp一份.bak,这是我用血换的规矩。

给你的决策顺序,别按我踩坑的顺序来

我那晚的路径其实是:换加速器(失败40分钟)、搜新教程换加速器(失败40分钟)、放弃治疗睡觉、第二天手动搬运(成功)、第三周搭自己的仓库(一劳永逸)。你要是今天就卡在这儿,倒着走效率高得多:

  • 先看报错确认是拉取问题,不是容器配置问题,别治错病。
  • 手边有能正常上网的电脑:直接docker save加load,十分钟解决,别跟加速器较劲。
  • 拉镜像这事儿三个月就要来一回的:注册个阿里云个人镜像仓库,把常用镜像转存进去,daemon.json指过去,从此安静。
  • 只有电脑也拉不动的情况,再去测公共加速器,记住用那条curl命令先测再配,别抄教程里的死地址。

最后说句实在的,Docker这套东西拉镜像的难,其实是所有国内玩家共同摊到的税,不是你NAS的问题,也不是你配置错了。挑条稳定的路把它绕过去就完了,省下的时间去看照片墙不香吗。我在Docker概念那篇里说过镜像是什么,配合这篇的搬运法子,新手也能把这条路走通。

展开全文


版权说明 手机扫码阅读
版权所有:《数巢笔记》 => 《NAS上Docker镜像拉不下来怎么办?装个Immich卡了37分钟超时三次,能试的路我全试完,稳的就这两条》
本文地址:https://www.shunot.com/nas/1502.html
除非注明,文章均为 《SHUNOT》 原创,欢迎转载!转载请注明本文地址,谢谢。

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:master_135

工作日:9:00-23:00,节假日休息

扫码关注