文章目录
- 使用 Docker 安装 Open WebUI 并集成 Ollama 的 DeepSeek 模型
- 前提条件
- 1. 安装ollama
- 2. 拉取deepseek的模型
- 3. Open-WebUI 说明
- 4. 启动容器
- 文档的方法如下
- 优化命令(可选)
- 1. 增加了健康检查机制(`--health-cmd`)
- 2. 使 WebUI 服务更稳定
- 3. 避免容器启动时的误报(`--health-start-period 60s`)
- 4. 更灵活的健康检查配置
- 🚀
- 5. 配置 Open-WebUI
- 页面如下所示
- 知识库
- 多用户管理
- 局域网其他用户访问
- 6. 结论
使用 Docker 安装 Open WebUI 并集成 Ollama 的 DeepSeek 模型
在本教程中,我们将指导您如何使用 Docker 安装 Open WebUI,并将其与 Ollama 的 DeepSeek 模型集成。这种方法可以简化部署过程,并确保环境的一致性。
前提条件
- 操作系统:Windows、macOS 或 Linux
- 硬件要求:建议至少有 16GB 内存。如果要运行更大的模型,需要更多的内存。
- **显存要求:**deepseek:1.5b需要2G显存,8b需要6.9G显存,14b需要11G显存。如下图
- 已安装 Docker:如果尚未安装,请参考 Docker 官方文档 进行安装。
本文基于win11操作系统。
1. 安装ollama
进入ollama官网,下载对应的客户端
ollama官网:https://ollama.com/
2. 拉取deepseek的模型
进入如下网站,拉取不同的deepseek模型:
deepseek模型:https://ollama.com/library/deepseek-r1
默认拉取的是7b模型
ollama run deepseek-r1
1.5b模型
ollama run deepseek-r1:1.5b
14b模型
ollama run deepseek-r1:14b
r1后面的数字就是对应不同的参数模型,其他模型可参见官网代码。
使用如下命令查看模型是否已经存在:
ollama list
3. Open-WebUI 说明
open-webui仓库:https://github.com/open-webui/open-webui
访问上述网站,可以查看更多的open-webui详细说明。
虽说可以通过conda新建虚拟环境安装,但还是推荐使用Docker安装。
open-webui的文档说明:https://docs.openwebui.com/
4. 启动容器
文档的方法如下
如果你电脑安装了ollama,不使用gpu,使用如下命令:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
为了应用支持Nvidia GPU的open webui,使用如下命令:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
参数 | 作用 |
---|---|
-d | 让容器后台运行 |
-p 3000:8080 | 把宿主机 3000 端口映射到容器的 8080 端口 |
--gpus all | 允许容器使用 GPU(需 NVIDIA 设备) |
--add-host=host.docker.internal:host-gateway | 让容器能访问宿主机 |
-v open-webui:/app/backend/data | 持久化存储 Open-WebUI 数据 |
--name open-webui | 给容器命名为 open-webui |
--restart always | 让容器在崩溃或重启后自动恢复 |
ghcr.io/open-webui/open-webui:cuda | 使用 Open-WebUI CUDA 版本镜像 |
优化命令(可选)
启用支持GPU的open webui,并增加健康检查:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway --health-cmd "curl -fsSL http://localhost:8080 || exit 1" --health-interval 60s --health-retries 5 --health-timeout 20s --health-start-period 60s --restart=always -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:cuda
1. 增加了健康检查机制(--health-cmd
)
-
问题
(基础版):
- 仅依靠
--restart=always
,Docker 只有在容器完全崩溃时才会重启它。 - 如果 Web 服务挂掉了(但容器仍然运行),Docker 无法检测到,导致 WebUI 看似“正常运行”,但实际上用户无法访问。
- 仅依靠
-
优化
(改进版):
- 通过
--health-cmd "curl -fsSL http://localhost:8080 || exit 1"
,每 60 秒检查一次 API 是否存活,确保 WebUI 真正可用。 - 如果 API 失去响应,Docker 会自动将容器标记为
unhealthy
,并可能触发重启。
- 通过
2. 使 WebUI 服务更稳定
-
问题(基础版):
- 由于 没有健康检查,如果 WebUI 进程崩溃但容器仍在运行,Docker 不会检测到问题,用户可能无法访问 WebUI。
-
优化(改进版):
-
结合
HEALTHCHECK
和--restart=always
:
- Web 服务异常 → 健康检查失败 → 容器被标记
unhealthy
- 可以手动检查问题,或使用外部监控工具观察容器状态。
- Web 服务异常 → 健康检查失败 → 容器被标记
-
3. 避免容器启动时的误报(--health-start-period 60s
)
- 问题(基础版):
- 容器刚启动时,WebUI 可能还没完全就绪,如果立即运行健康检查,可能会误判它“宕机”并触发不必要的重启。
- 优化(改进版):
- 添加
--health-start-period 60s
,启动后 60 秒内不执行健康检查,避免因启动时间较长导致误判。
- 添加
4. 更灵活的健康检查配置
参数 | 基础版 | 优化版(改进点) | 作用 |
---|---|---|---|
--health-cmd | ❌ 无 | ✅ curl -fsSL http://localhost:8080 | |
--health-interval 60s | ❌ 无 | ✅ 60 秒检测一次 | 定期检查 WebUI 是否存活 |
--health-retries 5 | ❌ 无 | ✅ 允许 5 次失败 | 避免短暂波动导致误判 |
--health-timeout 20s | ❌ 无 | ✅ 每次检查最长等待 20 秒 | 适应 WebUI 可能的响应延迟 |
--health-start-period 60s | ❌ 无 | ✅ 60 秒后才开始检查 | 避免容器刚启动时误判 |
🚀
方式 | 是否有健康检查 | 是否能检测 API 状态 | 自动重启能力 | 恢复速度 |
---|---|---|---|---|
基础版 | ❌ 无 | ❌ 无 | ✅ 仅在容器崩溃时重启 | ⚠️ 可能 WebUI 已坏但不会重启 |
优化版(有健康检查) | ✅ 有 | ✅ 使用 curl 确保 API 正常 | ✅ 进程崩溃或 API 不可用时重启 | 🚀 更快发现问题并恢复 |
5. 配置 Open-WebUI
现在,我们需要配置 Open-WebUI,使其能够使用我们下载的 DeepSeek 模型。
-
访问 Open-WebUI:
在浏览器中,导航到
http://localhost:3000
。如果这是您第一次访问,您需要创建一个管理员账户。
http://localhost:3000/ -
配置模型:
在 Open-WebUI 的设置中,添加一个新的模型配置,选择 Ollama 作为提供者,并指定您下载的 DeepSeek 模型的名称,例如
deepseek-r1
。 -
保存设置:
保存您的设置,然后返回主界面,您现在应该能够使用 DeepSeek 模型进行推理了。
页面如下所示
可以自由切换不同模型
知识库
在工作空间中,可以上传对应的知识库,使模型学习到领域知识。
多用户管理
在管理员面板中,可以增加不同用户,设置不同的权限。
局域网其他用户访问
查看部署open webui的宿主机,查看IPv4地址,例如为:1.1.1.1
局域网内其他用户使用浏览器访问IP+端口号,例如:1.1.1.1:3000,输入用户名密码登录即可使用。
6. 结论
通过以上步骤,您已经成功地使用 Docker 安装了 Open-WebUI,并将其与 Ollama 的 DeepSeek 模型集成。这种方法不仅简化了部署过程,还确保了环境的一致性。您现在可以在本地环境中体验强大的语言模型功能。