使用Docker安装Ollama及Open-WebUI完整教程

作者:吴业亮
博客:wuyeliang.blog.ZEEKLOG.net

一、Ollama 简介及工作原理

1. Ollama 简介及原理

  • 简介:Ollama 是一款轻量级、开源的大语言模型(LLM)运行工具,旨在简化本地部署和运行大语言模型的流程。它支持 Llama 3、Mistral、Gemini 等主流开源模型,用户无需复杂配置即可在本地设备(CPU 或 GPU)上快速启动模型,适用于开发测试、本地智能应用搭建等场景。
  • 工作原理
    • 采用模型封装机制,将大语言模型的运行环境、依赖库及推理逻辑打包为标准化格式,实现模型的一键下载、启动和版本管理。
    • 通过优化的推理引擎适配硬件架构,支持 CPU 基础运行和 GPU 加速(如 NVIDIA CUDA),减少资源占用并提升响应速度。
    • 提供简洁的 REST API 和命令行接口,降低开发者集成门槛,无需深入了解模型底层细节即可调用。
    • 支持容器化部署,确保跨环境一致性,避免依赖冲突问题。

2. Open-WebUI 简介及原理

  • 简介:Open-WebUI 是一款开源的可视化界面工具,专为 Ollama 设计,提供直观的交互界面用于管理和使用大语言模型。它支持模型切换、对话历史记录、参数调整等功能,让本地大语言模型的使用更便捷。
  • 工作原理
    • 作为前端交互层,通过 API 与 Ollama 后端通信,接收用户输入并将其转发给 Ollama 进行模型推理。
    • 解析 Ollama 返回的结果并以自然语言对话形式展示给用户,同时记录对话历史并支持上下文关联。
    • 提供模型管理功能,可直接在界面中下载、启动、停止 Ollama 支持的模型,简化模型运维流程。
    • 支持容器化部署,与 Ollama 容器通过网络互通,实现快速搭建完整的本地大语言模型交互系统。

二、安装Docker

1. 安装Docker依赖

apt-getinstall ca-certificates curl gnupg lsb-release 

2. 添加阿里云Docker软件源

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg |sudo apt-key add - 

3. 配置系统软件源

编辑/etc/apt/sources.list文件,添加以下内容(清华大学Ubuntu镜像源):

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # 安全更新软件源 deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse 

4. 添加Docker软件源并更新密钥

add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DDCAE044F796ECB0 

5. 安装Docker

apt-getinstall docker-ce docker-ce-cli containerd.io 

6. 验证Docker安装

docker -v 

7. 配置Docker国内镜像源

7.1 编辑配置文件/etc/docker/daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://docker.m.daocloud.io","https://ghcr.io","https://mirror.baidubce.com","https://docker.nju.edu.cn"]}
7.2 重新加载并重启Docker
systemctl daemon-reload systemctl restart docker 

三、安装英伟达显卡驱动(GPU支持)

1. 配置存储库

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey |sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 

2. 设置源

创建并编辑nvidia-container-toolkit.list文件:

# 内容如下 deb https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/$(ARCH) / deb https://mirrors.ustc.edu.cn/libnvidia-container/stable/ubuntu18.04/$(ARCH) / #deb https://mirrors.ustc.edu.cn/libnvidia-container/experimental/deb/$(ARCH) /#deb https://mirrors.ustc.edu.cn/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /

3. 更新包列表

sudoapt-get update 

4. 安装NVIDIA Container Toolkit

apt-getinstall -y nvidia-container-toolkit 

5. 配置Docker以支持Nvidia驱动

nvidia-ctk runtime configure --runtime=docker 

6. 重启Docker服务

systemctl restart docker.service 

四、使用Docker安装Ollama

1. 拉取Ollama镜像

官方镜像:

docker pull ollama/ollama:latest 

国内镜像(推荐):

docker pull dhub.kubesre.xyz/ollama/ollama:latest 

2. 启动Ollama容器

docker run -d \ --gpus=all \ --restart=always \ -v /root/project/docker/ollama:/root/project/.ollama \ -p 11434:11434 \ --name ollama \ ollama/ollama 
说明:此配置会让Ollama将模型保持加载在内存(显存)中

五、使用Docker安装Open-WebUI

1. 安装Main版本

docker run -d \ -p 15027:8080 \ --gpus all \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.nju.edu.cn/open-webui/open-webui:main 

2. 安装CUDA版本(GPU加速)

docker run -d \ -p 15027:8080 \ --gpus all \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.nju.edu.cn/open-webui/open-webui:cuda 

3. 访问Open-WebUI

打开浏览器访问以下地址进行登录:

http://192.168.1.129:15027/auth 

Read more

【深度学习】Java DL4J 2024年度技术总结

【深度学习】Java DL4J 2024年度技术总结

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 技术合作请加本人wx(注明来自ZEEKLOG):foreast_sea 【深度学习】Java DL4J 2024年度技术总结 文章目录 * 【深度学习】Java DL4J 2024年度技术总结 * 引言 * 一、Java DL4J深度学习概述 * 1.1 DL4J框架简介 * 1.

By Ne0inhk
【Java Web学习 | 第三篇】CSS(2) - 元素显示模式

【Java Web学习 | 第三篇】CSS(2) - 元素显示模式

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS元素显示模式 * 2.1 什么是元素显示模式? * 2.2 三大核心显示模式详解 * 1. 块级元素(Block Level Elements) * 2. 行内元素(Inline Elements) * 3. 行内块元素(Inline-Block Elements) * 2.3元素显示模式的转换语法 * 1. 转为块级元素:`display: block` * 2. 转为行内元素:`display: inline` * 3. 转为行内块元素:`display: inline-block` * 2.4 实战案例:小米侧边栏实现 * 2.

By Ne0inhk
Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结

Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结

🏠个人主页:黎雁 🎬作者简介:C/C++/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、游戏、规划、程序人生 ✨ 从来绝巘须孤往,万里同尘即玉京 文章目录 * Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结 🕒 * 📝 文章摘要 * 一、时间相关基础知识点 ⏱ * 1. 时间标准 * 2. 时间单位与换算 * 二、Date 时间类 📅 * 1. 概述 * 2. 构造方法 * 3. 成员方法 * 4. 代码示例 * 三、SimpleDateFormat 格式化与解析 ✍️ * 1. 作用

By Ne0inhk
【技术架构】从单机到微服务:Java 后端架构演进与技术选型核心方案

【技术架构】从单机到微服务:Java 后端架构演进与技术选型核心方案

🔥个人主页: 中草药  🔥专栏:【Java】登神长阶 史诗般的Java成神之路 一、单机架构         单机架构的核心是 “单点部署”:后端服务的所有功能模块(从接收请求到返回响应)都在一台机器内完成,不存在跨机器的网络通信(如分布式中的服务调用、跨节点数据库访问)。 诞生于互联网发展早期阶段:当时用户访问量小、业务场景简单,单机的计算(CPU、内存)与存储(磁盘)能力,足以支撑业务需求,无需多机分布式协作。 可以用一个简单的类比理解: * 单机架构 ≈ 一家 “夫妻小店”:老板(应用服务)、仓库(数据库)、收银台(Web 服务器)、货架(静态资源)都在同一个店面里,顾客(用户)的需求在店内即可全部满足,无需联系外部。 * 分布式架构 ≈ 连锁超市:总部(核心服务)、分店(

By Ne0inhk