使用Ollama Docker镜像结合LangChain运行LLaMA模型推理时出错
错误原因分析
你遇到的镜像拉取错误核心是Docker无法从官方仓库获取python:3.9-slim镜像,EOF提示请求中途中断,常见诱因包括:
- 网络连接不稳定,请求未完成就断开
- 防火墙/代理拦截了Docker对镜像仓库的访问
- 本地Docker缓存损坏,导致镜像元数据解析失败
- 镜像标签解析歧义(概率较低,
python:3.9-slim目前仍在官方仓库中)
另外你的配置还有两个潜在问题,即使解决拉取错误,后续运行也会报错:
- Dockerfile仅复制了Ollama模型文件,但未启动Ollama服务,脚本中
OllamaLLM默认连接localhost:11434,会出现连接失败 requirements.txt缺失pandas依赖,脚本使用了pd.DataFrame,安装阶段会报错
解决方法
一、修复镜像拉取失败问题
按以下步骤逐一排查:
- 验证网络连通性:在主机执行
curl https://registry-1.docker.io,确认能正常返回内容 - 切换国内镜像源:修改Docker配置添加加速源(以Linux为例):
编辑/etc/docker/daemon.json:
保存后重启Docker服务:{ "registry-mirrors": ["https://<你的国内镜像加速地址>"] }systemctl restart docker - 清理无效缓存:执行命令清理损坏的缓存数据:
docker system prune -a - 指定完整镜像路径:将Dockerfile中
FROM python:3.9-slim改为FROM docker.io/library/python:3.9-slim,避免镜像解析歧义 - 检查代理配置:如果主机使用代理,确保Docker已同步代理设置,防止请求被拦截
二、修复Dockerfile和依赖的潜在问题
提供两种可行的部署方案:
方案1:单容器同时运行Ollama和Python脚本
基于Ollama镜像搭建Python环境,直接复用容器内的Ollama服务:
FROM ollama/ollama:latest # 安装Python 3.9及依赖工具 RUN apt-get update && apt-get install -y python3.9 python3-pip && rm -rf /var/lib/apt/lists/* RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 WORKDIR /app COPY requirements.txt . RUN pip3 install --no-cache-dir -r requirements.txt COPY script.py . # 先启动Ollama服务,延迟10秒后运行脚本 CMD ["sh", "-c", "ollama serve & sleep 10 && python3 script.py"]
方案2:Docker Compose多容器部署
将Ollama和Python服务分开,通过容器网络互通:
创建docker-compose.yml:
version: '3.8' services: ollama: image: ollama/ollama:latest volumes: - ollama_models:/root/.ollama/models command: ["serve"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"] interval: 10s timeout: 5s retries: 3 app: build: . depends_on: ollama: condition: service_healthy environment: - OLLAMA_BASE_URL=http://ollama:11434 volumes: - .:/app volumes: ollama_models:
对应的Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY script.py . CMD ["python", "script.py"]
同时修改脚本中Ollama初始化代码,指定服务地址:
model = OllamaLLM(model="llama3.1", base_url="http://ollama:11434")
修复requirements.txt
添加缺失的pandas:
pandas networkx langchain langchain_ollama
验证步骤
- 先单独拉取镜像测试:
docker pull python:3.9-slim,确认拉取正常 - 构建镜像或启动Compose服务,查看容器日志确认服务运行状态
- 检查脚本输出,确认模型调用成功
内容的提问来源于stack exchange,提问作者Ohm
相关产品推荐
相关产品推荐

