You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中Ollama交互式Shell可拉取模型,Dockerfile RUN命令失败求助

解决Ollama Docker构建时拉取模型失败的问题

问题根源

Docker的每个RUN指令对应独立的构建层,指令执行完毕后,当前层的所有进程都会被终止。你分开编写RUN ollama serve &和RUN ollama pull nomic-embed-text时,第二个RUN执行时,前一个RUN启动的ollama服务已经停止,因此会出现连接失败的错误。

正确的Dockerfile写法

将启动服务、等待服务就绪、拉取模型的操作放在同一个RUN指令中,确保它们在同一个shell会话内执行:

FROM ollama/ollama

EXPOSE 11434

# 后台启动ollama服务,等待服务就绪后拉取模型
RUN ollama serve & \
    && sleep 5 \
    && ollama pull nomic-embed-text

更可靠的优化方案

用curl检查服务端口状态替代固定时长的sleep,能更精准地等待服务就绪,同时清理临时安装的工具以减小镜像体积:

FROM ollama/ollama

EXPOSE 11434

RUN apt-get update && apt-get install -y curl \
    && ollama serve & \
    && until curl -s http://localhost:11434/api/tags; do sleep 1; done \
    && ollama pull nomic-embed-text \
    && apt-get purge -y curl && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

关键说明

  • 使用\连接多行命令,保证所有操作在同一个RUN层内完成,后台启动的服务能持续到拉取模型操作结束。
  • 用until循环配合curl检查服务API,确保服务完全就绪后再执行拉取操作,避免因服务启动延迟导致的失败。

内容的提问来源于stack exchange,提问作者Sun Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:26:30