在 Linux 上,尤其是 Ubuntu 24.04,用 Docker Compose 同时跑 Open WebUI 和 Ollama,结果 WebUI 死活认不出模型,提示“No models found”。这问题折腾了我好几个小时,最后发现根子就在一个地址上。
- 问题核心:host.docker.internal 在 Linux 上默认不解析,不像 Windows 和 Mac 那样开箱即用。
- 解决方案:在同一个 Docker Compose 网络里,直接用服务名 ollama 当主机名。
- 关键步骤:进 WebUI 设置,把 Ollama API 地址改成 http://ollama:11434,点刷新。
为什么 host.docker.internal 在 Linux 上会掉链子
很多人习惯在 Windows 或 Mac 上用 host.docker.internal 来让容器访问宿主机服务,这招在 Linux 上经常失灵。因为 Linux 的 Docker 默认没有内置这个特殊的主机名解析机制。当你的 Open WebUI 容器试图通过这个地址去找宿主机上的 Ollama 时,直接就找不着北了,所以才会一直报“No models found”。
正确的连接姿势,一步到位
既然两个服务都在同一个 docker-compose.yml 文件里定义,Docker Compose 就会自动把它们放到同一个内部网络里,并且充当一个 DNS 服务器。这时候,容器之间互相访问,直接用你在 docker-compose.yml 里定义的服务名就行,这才是最直接、最可靠的方式。
具体操作:
1. 打开你的 Open WebUI 界面(通常是 localhost:3000)。
2. 进入 Settings > Connections。
3. 在 Ollama API 那一栏,把原来的地址删掉,输入:http://ollama:11434
4. 点击旁边的刷新/验证图标。
就这么简单。原理就是让 WebUI 容器在 Docker 的内部网络里,直接去找名字叫 “ollama” 的容器,完全绕过了宿主机的网络配置问题。
如果还不行,检查这个隐藏步骤
按上面改完地址,如果 WebUI 里还是看不到模型列表,先别急。有可能你压根还没把模型拉到 Ollama 里面。很多人以为容器跑起来就完事了,其实还得手动把模型 pull 进去。
在终端执行这个命令,确保模型已经下载:
docker exec -it ollama ollama pull llama3.2
这个命令的意思是,进入正在运行的“ollama”容器,然后执行容器内的 ollama pull 命令来拉取 llama3.2 这个模型。模型拉取成功后,再回到 WebUI 刷新,应该就能看到了。
这个坑我也踩过,改了地址以为万事大吉,结果列表还是空的。跑了一下 pull 命令,等模型下载完,再刷新,模型就乖乖出现了。所以,网络连通是第一步,模型数据是第二步,缺一不可。
留言聊聊
你在用 Docker 部署 AI 工具时,还踩过哪些类似的网络配置的坑?是端口冲突、防火墙,还是别的什么神奇问题?
来源:Reddit Ollama|原文:Open WebUI not connecting to Ollama on Linux/Ubunt