基于上一篇文章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 前端显示。
相关推荐
程序员老赵38 分钟前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
TTATTC1 小时前
为什么单会话聊天做不好复杂工程?Claude Code 创作者的并发 Worktree 与记忆闭环实践
docker·开源
TTATTC1 小时前
状态机驱动长事务,还是 DAG 编排高并发?高可靠业务流程引擎的双核架构设计
docker·开源
殷忆枫1 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
千桐科技3 小时前
qModel算法模型平台功能解析:从源码到 Docker 镜像,部署能自动完成哪些工作?
运维·docker·容器·qmodel
mengge.cloud5 小时前
1019Namespace ,Contexts ,Kubernetes Pod
运维·服务器·网络·云原生·容器·kubernetes·云计算
江湖有缘5 小时前
Docker实战 | 使用Docker部署Imagor Studio图片编辑工具
java·docker·eureka
Xxtaoaooo5 小时前
私人日记不想散落在多个App?我用DailyTxT把记录、搜索和图片都放进自己的NAS
docker·nas·dailytxt
吴声子夜歌5 小时前
Docker入门与实战——Etcd(高可用的键值数据库)
数据库·docker·etcd
flytalei6 小时前
从 Docker Compose 到 K3s:逐浪博客 MySQL 数据迁移实战与一致性验证
mysql·docker·容器