ollama模型迁移内网不需要docker

模型与算力

给内网隔离环境的运维讲清楚:不装 Docker,怎么把 Ollama 模型目录搬到没有外网的机器上跑起来。

很多公司的推理机器在内网,不允许装 Docker,也连不上模型仓库,但业务又要在上面跑 Ollama。卡点通常不在推理本身,而在「模型怎么进去」。这篇按搬运前准备、选搬运物、落到目标机、验证与踩坑四个环节走一遍,只讲不依赖容器的做法,并说清哪些情况下这套流程不成立。

内网隔离机器上装 Ollama,经常卡住的不是推理,而是模型怎么进去。很多公司规定不许装 Docker,也连不上外网模型仓库,运维只有一台能上外网的机器和一条单向拷贝通道。这篇就按「不依赖容器」的思路,把搬运前准备、选搬运物、落到目标机、验证与踩坑四段讲一遍,能给同事照着做。

先说清适用边界:两端 Ollama 大版本不能差太远,模型格式本身要兼容,公司也没规定只能走镜像仓库分发。满足这几条,纯文件搬运是可行的;不满足就得另走审批链路,不是换个命令能绕过去的。

搬之前先确认三件事

  • 两端 Ollama 版本尽量对齐,版本跨太多时模型目录结构可能不兼容;先在站内部署测算页按目标机显存定好要搬哪个量化档位,别搬完才发现跑不动
  • 记下目标机的模型存储路径:默认位置因系统而异,用环境变量 OLLAMA_MODELS 指定一个数据盘目录更稳,避免塞满系统盘
  • 确认内网机器能起服务、能监听端口,但不需要外网;如果只是同一局域网,走的是普通文件拷贝,难度比跨隔离区低一个量级

版本对齐这件事最容易被忽略。源机跑得好好的模型,拷到版本差得多的目标机上可能连列表都出不来。先在源机上把版本号记下来,再去目标机核对,差得远就先升级目标机,别先搬。

OLLAMA_MODELS
指定模型存放目录的环境变量,换到数据盘能避免系统盘被撑满
量化档位
同一个模型不同精度版本,决定显存占用和输出质量,搬之前要先定
单向拷贝通道
隔离环境常见的文件摆渡方式,只能从外往内拷,反向不行

到底搬哪些文件:模型目录 vs 导出包

两条路:一是把源机 OLLAMA_MODELS 下的模型文件夹整体拷走,放到目标机同一层目录;二是用导出/导入的方式打包。前者简单,路径和版本要自己对齐;后者适合要过审批、要压缩体积或跨多个隔离区的场景,包体更干净。

对比项整体拷模型目录导出/导入打包
适用场景同版本、同操作系统、批量搬版本不一致、只搬单个模型、要过审批
操作量目录拷过去即可,路径要对齐一条命令一个模型,多个要分批
体积处理原样拷贝,压缩要自己另做包体较干净,便于压缩和分卷
出错点路径写错、权限不对、模型名对不上漏搬依赖、分批时容易漏模型

怎么选:同版本同系统批量搬,直接拷目录最省事;版本不一致或只搬一个模型,用导入导出更稳。模型本体是只读的,搬运不会丢参数,真正会出问题的是路径写错、权限不对、模型名对不上。

落地步骤:从打包到跑通

  1. 源机验证先在源机正常推理一次,确认模型本身没问题,再执行停服务,避免拷到一半的残缺目录
  2. 打包过隔离区建议先压缩再分卷,拷贝完做一次大小或校验值比对,别指望拷过去了就是对的
  3. 落到目标机解压到 OLLAMA_MODELS 指向的目录,确认文件和目录的属主、读写权限正确,再用普通用户重启服务
  4. 最短验证重启后用列表命令确认模型出现在清单里,然后发一条最短的推理请求;不通先看服务日志,别急着重新拷

中间那步「校验值比对」值得强调。隔离区摆渡经常出现拷了一半、文件名对但内容截断的情况,只看文件在不在是不够的,至少要比对大小,条件允许就比校验值。

# 源机:记录模型目录大小和校验值;目标机:解压后比对
# 具体路径以实际 OLLAMA_MODELS 为准,不要照抄默认路径
du -sh "$OLLAMA_MODELS"
find "$OLLAMA_MODELS" -type f -exec md5sum {} + | sort > manifest.txt

验证与常见坑排查顺序

不通的时候按固定顺序查,别一上来就怀疑模型文件坏了。顺序是:服务有没有起来、模型列不列得出来、能不能加载进显存、输出是否正常。每一步对应不同的原因,跳着查只会浪费时间。

  • 服务起不来:看端口占用、运行用户权限、日志里的启动报错
  • 模型列不出来:看 OLLAMA_MODELS 路径是否指对、目录层级是否和源机一致
  • 加载不进显存:看量化档位是否超出目标机显存,回到部署测算页核对
  • 输出异常或很慢:看是否走到了 GPU,去接口测速页量一下延迟基线再判断

典型坑还有几个:路径里大小写或分隔符写错、目标盘空间不足导致加载中断、模型名带冒号标签但拷进去的目录名不匹配、跨平台后符号链接失效。这些都在日志里有迹可循,别靠猜。

现象先看哪里常见原因
服务没起来启动日志、端口权限、端口占用
列表为空OLLAMA_MODELS 路径路径指错、层级不一致
加载失败显存占用、日志档位超出显存、空间不足
速度异常接口测速页没走 GPU、链接失效

还有一点:这套做法只解决「模型怎么进去」,不解决资源够不够、性能行不行。目标机能不能长期稳定跑,得看显存和并发,别把搬运跑通当成业务上线。

下一步搬之前先去站内部署测算页核对目标机能带动的量化档位,跑通后再用接口测速页量一条延迟基线,后续排查才有参照。

常见问题

不装 Docker 会不会影响后续升级?

不会。Ollama 本身是独立进程,模型目录和程序是分开的。升级程序时模型目录可以原地保留,只要新版本仍认这个目录结构。稳妥做法是升级前把模型目录备份一份,升级后先确认模型还能列出来再删备份。

模型拷过去之后提示找不到,先查什么?

先查存放路径是否和 OLLAMA_MODELS 指向一致,再看目录名与模型名标签是否对得上,最后看权限和服务日志。多数情况是路径或命名问题,不是文件损坏。

能不能只搬一部分层来省空间?

不建议。模型目录里的各层是配套的,缺一层就加载失败。要省空间应该换更低的量化档位重新准备模型,而不是从已有目录里挑文件拷,省下的空间远不够填排查成本。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。