以下是分步解决方案:
问题原因分析
Open WebUI 无法识别 Ollama 的模型,通常由以下原因导致:
- Ollama 服务未正确暴露给 Docker 容器
- 模型未正确下载或名称不匹配
- 网络配置或权限问题
解决方案
1. 确认 Ollama 服务可达性
在宿主机(非容器内)执行以下命令,验证 Ollama 是否正常运行:
curl http://localhost:11434
若返回 Ollama is running
则服务正常。否则重启 Ollama:
ollama serve
2. 确保 Docker 容器可访问宿主机服务
检查 Docker 运行命令中是否包含 --add-host=host.docker.internal:host-gateway
(你的命令已包含此参数)。
此配置允许容器通过 host.docker.internal
访问宿主机服务。
3. 验证模型下载状态
在宿主机上运行以下命令,确认模型已正确下载:
ollama list
输出应包含已下载的模型(如 llama2
):
NAME ID SIZE MODIFIED llama2 xxxxxxx 3.8GB 2 days ago
4. 在 Open WebUI 中连接 Ollama
登录 Open WebUI(http://localhost:3000
),按以下步骤操作:
- 点击左下角 ⚙️ 设置。
- 进入
Model Settings
标签页。 - 确保 Ollama Base URL 设置为:
(关键配置!此地址让容器内通过 Docker 网络访问宿主机上的 Ollama)http://host.docker.internal:11434
- 点击 Save 保存配置。
5. 刷新并选择模型
- 返回 Open WebUI 主界面。
- 点击模型选择框(顶部中央),输入模型名称(如
llama2
)。 - 若模型列表未更新,重启 Open WebUI 容器:
BASH
docker restart open-webui
常见问题排查
情况 1:Ollama API 不可达
在 Open WebUI 容器内执行以下命令,测试连接:
BASH
docker exec -it open-webui curl http://host.docker.internal:11434
若返回失败,检查:
- 宿主机防火墙是否放行
11434
端口。 - Docker 命令中是否缺少
--add-host
参数。
情况 2:模型名称不匹配
在 Open WebUI 中输入模型名称时,需与 ollama list
中的名称 完全一致(如区分大小写)。
情况 3:权限问题
若使用 Linux,确保 Docker 容器有权限访问宿主机网络:
BASH
sudo setenforce 0 # 临时关闭 SELinux(仅测试用)
完整调试步骤
-
查看容器日志:
BASH
docker logs open-webui
检查是否有类似
Error connecting to Ollama API
的错误。 -
手动触发模型加载:
在 Open WebUI 容器内执行:BASH
docker exec -it open-webui curl http://host.docker.internal:11434/api/tags
应返回已下载的模型列表。
通过以上步骤,Open WebUI 应能正确识别 Ollama 模型。若问题仍存在,请提供 docker logs open-webui
的输出内容。