基于上一篇文章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 前端显示。
相关推荐
IT策士7 分钟前
Docker 从 0 到 1 再到 Kubernetes 实战:第18篇 从 Docker Compose 到 Kubernetes 的思考
docker·容器·kubernetes
linmengmeng_131422 分钟前
【总结】Docker 容器重建后 Nginx 502 问题排查与解决
nginx·docker·容器
qq_3564086627 分钟前
Kubernetes Rook-Ceph 高可用存储部署文档
ceph·容器·kubernetes
Plastic garden27 分钟前
Docker(3)Docker 镜像 & Dockerfile
运维·docker·容器
“码”力全开28 分钟前
解耦异构算力与多协议接入:基于Docker与源码交付的开源GB28181/RTSP边缘计算AI视频管理平台架构深度解析
人工智能·docker·开源
m0_7408596239 分钟前
Docker安装常见数据库命令汇总(2026)
数据库·docker·容器
taiguisheng40 分钟前
Docker中编译esp32
windows·docker·esp32
IT策士42 分钟前
第16篇 实战:用 Docker Compose 编排 WordPress 与 MySQL
mysql·docker·容器
“码”力全开1 小时前
解耦流媒体与AI推理:基于Docker与GB28181/RTSP的边缘计算中台,全量源码交付如何帮集成商节省95%开发成本?
人工智能·docker·边缘计算
Plastic garden1 小时前
Docker(2)数据挂载
运维·docker·容器