基于上一篇文章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 前端显示。
相关推荐
杨浦老苏2 小时前
开源数据库备份工具Databasus
数据库·docker·备份·群晖
晨旭缘2 小时前
docker compose升级版本问题:KeyError_ ‘ContainerConfig‘
docker·容器·eureka
呼啦啦5612 小时前
测试(BUG篇)
bug
涛声依旧393162 小时前
运维项目实战:Nginx+Docker 部署HTTPS站点+身份认证
运维·nginx·docker·云原生·容器·https
ZC跨境爬虫2 小时前
3D地球卫星轨道可视化平台开发Day2(轨道错位Bug修复+模块化结构优化)
前端·3d·html·json·bug
黑风风2 小时前
一次 Docker 磁盘占用排查与迁移的完整复盘
docker·容器·eureka
inner2222 小时前
kubeasz部署k8s集群1.37
云原生·容器·kubernetes
柠檬07113 小时前
记录bug :C++调用python 路径问题
c++·python·bug
zb200641203 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker