使用 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
      • 可以手动检查问题,或使用外部监控工具观察容器状态。

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 模型。

  1. 访问 Open-WebUI

    在浏览器中,导航到 http://localhost:3000。如果这是您第一次访问,您需要创建一个管理员账户。
    http://localhost:3000/

  2. 配置模型

    在 Open-WebUI 的设置中,添加一个新的模型配置,选择 Ollama 作为提供者,并指定您下载的 DeepSeek 模型的名称,例如 deepseek-r1

  3. 保存设置

    保存您的设置,然后返回主界面,您现在应该能够使用 DeepSeek 模型进行推理了。

页面如下所示

可以自由切换不同模型
在这里插入图片描述

知识库

在工作空间中,可以上传对应的知识库,使模型学习到领域知识。

多用户管理

在管理员面板中,可以增加不同用户,设置不同的权限。

局域网其他用户访问

查看部署open webui的宿主机,查看IPv4地址,例如为:1.1.1.1
局域网内其他用户使用浏览器访问IP+端口号,例如:1.1.1.1:3000,输入用户名密码登录即可使用。

6. 结论

通过以上步骤,您已经成功地使用 Docker 安装了 Open-WebUI,并将其与 Ollama 的 DeepSeek 模型集成。这种方法不仅简化了部署过程,还确保了环境的一致性。您现在可以在本地环境中体验强大的语言模型功能。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐