使用 Docker 安装 Open WebUI 并集成 Ollama 的 DeepSeek 模型

文章目录

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

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 模型集成。这种方法不仅简化了部署过程,还确保了环境的一致性。您现在可以在本地环境中体验强大的语言模型功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP-ABAP:SAP中REPORT程序和online程序的区别对比

在SAP中,REPORT程序和Online程序(通常指Dialog程序)是两种常见的ABAP程序类型,它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比: 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…

19.4.9 数据库方式操作Excel

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第21.2节 在第19.3.4节【…

算法15(力扣347)——前k个高频元素

1、问题 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 2、示例 (1) 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] (2) 输入: nums [1], k 1 输出: [1…

防御保护-----前言

HCIE安全防御 前言 计算机病毒 ​ 蠕虫病毒----->具备蠕虫特性的病毒:1,繁殖性特别强(自我繁殖);2,具备破坏性 蠕虫病毒是一种常见的计算机病毒,其名称来源于它的传播方式类似于自然界中…

IntelliJ IDEA 2024.1.4版无Tomcat配置

IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后,调试项目发现找不到Tomcat服务: 按照常规操作添加,发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮,进入插件窗口,搜索T…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考:docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件,内容填写Asia/Shanghai 手动创建目录&#xff1a…

Spring Boot 配置JPA数据库主从读写分离失败及解决办法

因为是老项目, Spring Boot 是1.4, 使用 AbstractRoutingDataSource 来做主从切换, 配置切面类在进入事务时切换成主库, 但实际运行起来却失败, 写操作路由到了从库 查了很多文章, 试了很多方法都无效, 包括修改注解 Transactional 的 propagation 属性, 清空主从标记等等 打…

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令 需求 在自动化安装操作系统完成后&#xff0c;需要对操作系统进行配置需要拷贝一些文件到新的操作系统中需要运行一些脚本 问题分析 Linux安装操作系统时&#xff0c;实际上是将ISO镜像文件中的操作系统…

【Django】 templates模板与static静态文件

1.templates模板 在app01(你创建的app名称)文件夹下&#xff0c;创建templates文件夹&#xff0c;其中存放想要返回的html文件 对应关系如下 除了上面的方式&#xff0c;还可以在项目根目录下创建templates文件夹&#xff0c;这时需要在settings.py文件中增加一行代码&#xf…

解锁电商数据宝藏:淘宝商品详情API实战指南

在电商蓬勃发展的今天&#xff0c;数据已成为驱动业务增长的核心引擎。对于商家、开发者以及数据分析师而言&#xff0c;获取精准、实时的商品数据至关重要。而淘宝&#xff0c;作为国内最大的电商平台&#xff0c;其海量商品数据更是蕴含着巨大的价值。 本文将带你深入探索淘…

YOLO11 【二】 【速通 训练+推理+导出】

一、 vscode 配置 conda 环境 选择默认配置修改配置文件 %windir%\System32\cmd.exe “/K” D:\Software\Anaconda3\Scripts\activate.bat D:\Software\Anaconda3 将该命令加到配置文件后面 ** “/K” D:\Software\Anaconda3\Scripts\activate.bat D:\Software\Anaconda3 **…

高等代数笔记—线性变换

latex花体字母与花体数字 https://blog.csdn.net/weixin_39589455/article/details/133846783 https://blog.csdn.net/orz_include/article/details/123645710线性变换 线性空间 V V V到自身的映射称为 V V V的一个变换&#xff0c;最基本的是线性变换。 定义&#xff1a;变换…

UWB功耗大数据插桩调研

一、摘要 UWB功耗点 插桩点 日志关键字 电流 蓝牙持锁 BatteryStats的锁统计 vendor_bluetooth_lock 30~40mA 测距 UwbSessionManager.startRanging UwbSessionManager.stoptRanging 或接入fadiKey Uwb状态广播 "com.fadiui.dkservice.action.uwb.state.change&q…

开发完的小程序如何分包

好几次了&#xff0c;终于想起来写个笔记记一下 我最开始并不会给小程序分包&#xff0c;然后我就各种搜&#xff0c;发现讲的基本上都是开发之前的小程序分包&#xff0c;可是我都开发完要发布了&#xff0c;提示我说主包太大需要分包&#xff0c;所以我就不会了。。。 好了…

前端vue项目打包部署

一、打包 可以在vscode中输入命令打包&#xff0c;也可以通过vscode的图形化界面打包 打包完成后&#xff0c;目录中&#xff0c;会生成dist文件。打包后&#xff0c;数据占用空间更小&#xff0c;比如把换行都去掉了。 完成打包 二、部署 前端主流部署服务器是 Ngix &#x…

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中&#xff0c;遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…

C++ STL容器之set使用及复现

cset 1. 关联式容器 vector、list、deque、forward_list(C11) 等STL容器&#xff0c;其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身&#xff0c;这样的容器被统称为序列式容器。而 map、set 是一种关联式容器&#xff0c;关联式容器也是用来存储数据的&#x…

激光工控机在精密制造中的应用与优势

在精密制造中&#xff0c;激光工控机可以用于许多场景例如 激光切割与雕刻&#xff1a;用于金属、塑料、陶瓷等材料的精密切割和雕刻&#xff0c;适用于汽车、航空航天、电子等行业&#xff1b;可实现复杂图案和高精度加工&#xff0c;满足微米级精度要求。 激光焊接&#xf…

第 12 天:行为树(Behavior Tree),让 AI 更智能!

&#x1f3af; 目标&#xff1a; ✅ 理解 Unreal Engine 5 行为树&#xff08;Behavior Tree&#xff09; ✅ 创建行为树&#xff08;BT&#xff09;和黑板&#xff08;Blackboard&#xff09;管理 AI 状态 ✅ 使用任务&#xff08;Task&#xff09;让 AI 巡逻、追踪、攻击玩家…