基于上一篇文章VMware+openweb UI+ollama+docker的bug问题总结

从虚拟机重启到 OpenWebUI 正常加载模型:终极排坑与完整流程总结

(适配绿色版 Ollama + Docker OpenWebUI,含网络与权限排坑)


一、核心背景与问题现象

你的环境

  • 虚拟机:Ubuntu 22.04(NAT 模式)
  • Ollama:绿色压缩包版,安装路径 /home/bxq/ai-ollama/bin
  • OpenWebUI:Docker 容器部署
  • 问题:虚拟机重启后,Ollama 已下载 qwen:0.5b,但 OpenWebUI 显示"未找到任何模型"

根本原因拆解

  1. 绿色版 Ollama 未开机自启 :压缩包版未注册系统服务,重启后进程消失,ollama: command not found
  2. Ollama 默认仅监听本地./ollama serve 默认绑定 127.0.0.1:11434,仅允许虚拟机本机访问,Docker 容器被拒绝。
  3. OpenWebUI 容器网络配置问题 :Linux Docker 无法自动解析 host.docker.internal,需通过 172.17.0.1 或虚拟机 IP 访问宿主机 Ollama。

二、完整修复流程(按顺序执行)

步骤1:启动 Ollama 并开放外部访问

bash 复制代码
# 进入 Ollama 程序目录
cd /home/bxq/ai-ollama/bin

# 杀死旧进程(防止端口占用)
pkill ollama

# 关键:绑定 0.0.0.0,允许所有设备访问
OLLAMA_HOST=0.0.0.0 ./ollama serve &

# 验证模型是否存在
./ollama list

✅ 成功标志:输出 qwen:0.5b,日志显示 Listening on 0.0.0.0:11434

步骤2:重建 OpenWebUI 容器,修正 API 地址

bash 复制代码
# 停止并删除旧容器
docker stop openwebui
docker rm openwebui

# 用正确参数启动容器
docker run -d \
  --name openwebui \
  -p 3000:3000 \
  -e HOST=0.0.0.0 \
  -e PORT=3000 \
  -e OLLAMA_BASE_URL=http://172.17.0.1:11434 \
  --restart always \
  ghcr.io/open-webui/open-webui:main

步骤3:验证容器与 Ollama 的连通性

bash 复制代码
# 进入容器测试 API 接口
docker exec -it openwebui sh
curl http://172.17.0.1:11434/api/tags

✅ 成功标志:返回包含 qwen:0.5b 的 JSON 数据。

步骤4:WebUI 内刷新模型列表

  1. 浏览器访问 http://192.168.146.131:3000 并登录
  2. 点击左下角「设置」→「连接」
  3. 确认 Ollama API 地址为 http://172.17.0.1:11434,点击「验证连接」
  4. 验证成功后,点击「刷新模型列表」,返回聊天界面即可选择模型

三、关键坑点与解决方案对照表

现象 根本原因 解决命令
ollama: command not found 未进入程序目录,或未加 ./ cd /home/bxq/ai-ollama/bin && ./ollama list
could not connect to ollama app Ollama 进程未启动 pkill ollama && ./ollama serve &
容器内 curl 172.17.0.1:11434 失败 Ollama 仅监听 127.0.0.1 OLLAMA_HOST=0.0.0.0 ./ollama serve &
WebUI 刷新后仍无模型 API 地址配置错误 重建容器,指定 OLLAMA_BASE_URL=http://172.17.0.1:11434

四、虚拟机重启后「一键复活」脚本

每次重启虚拟机,复制以下命令即可恢复服务:

bash 复制代码
# 1. 启动 Ollama(开放访问)
cd /home/bxq/ai-ollama/bin
pkill ollama
OLLAMA_HOST=0.0.0.0 ./ollama serve &

# 2. 重启 OpenWebUI
docker restart openwebui

# 3. 验证连通性
./ollama list
docker exec openwebui curl -s http://172.17.0.1:11434/api/tags

五、拓展:常用 Ollama 模型下载命令

bash 复制代码
# 国产模型
./ollama pull qwen:0.5b
./ollama pull qwen:1.8b
./ollama pull chatglm3:6b

# 开源模型
./ollama pull llama3:8b
./ollama pull gemma:2b
./ollama pull phi3:3.8b

六、总结与避坑要点

  1. 绿色版 Ollama 必须加 ./ 运行,且需手动启动,无法开机自启。
  2. OLLAMA_HOST=0.0.0.0 是关键,否则 Docker 容器无法访问 Ollama 服务。
  3. OpenWebUI 必须通过 172.17.0.1 访问 Ollama ,Linux 环境下不推荐使用 host.docker.internal
  4. 验证连通性优先用 curl 测试 API,而非直接依赖 WebUI 前端显示。
相关推荐
milo.qu16 小时前
RockyLinux9.7 docker部署Jisti Meet
linux·docker·容器
梦想与想象-广州大智汇18 小时前
自建docker加速镜像,使用 Cloudflare Workers/Pages 部署加速教程
运维·docker·容器
AI服务老曹20 小时前
架构师视角:如何构建支持GB28181/RTSP的异构AI视频平台?从Docker部署到源码交付的深度实践
人工智能·docker·音视频
用户789377339085321 小时前
Docker 部署踩坑记录:从“构建失败”到“服务跑通”,以及为什么数据被清空了
python·docker
Slow菜鸟1 天前
Docker 学习篇(三)| Docker安装指南(Linux版)
linux·学习·docker
炸炸鱼.1 天前
容器技术入门与 Docker 环境部署
docker
宁静@星空1 天前
007-Docker构建 jar 包成镜像
docker·容器·jar
A-刘晨阳1 天前
K8s之负载均衡
linux·运维·容器·kubernetes·负载均衡
xmlhcxr1 天前
从 0 到 1 落地企业级 DevOps CI/CD 流水线:基于 GitLab+Jenkins+Harbor 的完整实践
运维·docker·gitlab·jenkins·harbor·devops
隔窗听雨眠1 天前
Git二分法精准定位Bug
git·bug·git bisect