使用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

Rust WebAssembly与Three.js结合的3D数据可视化实战:高性能粒子系统

Rust WebAssembly与Three.js结合的3D数据可视化实战:高性能粒子系统

Rust WebAssembly与Three.js结合的3D数据可视化实战:高性能粒子系统 一、引言 💡3D数据可视化是现代Web应用的高级场景之一,广泛应用于数据分析、科学计算、游戏开发、虚拟仿真等领域。传统的JavaScript+WebGL/Three.js方案在处理大量数据(如百万级粒子)时,性能往往难以满足要求。Rust WebAssembly的高性能和内存安全特性,使得它非常适合优化3D数据可视化的核心算法,提高应用的响应速度和渲染帧率。 本章将深入探讨Rust WebAssembly与Three.js结合的3D数据可视化开发,介绍WebGL/Three.js的基本概念,讲解Rust Wasm与WebGL的交互方式,重点实现一个高性能粒子系统,支持粒子的创建、更新、删除,以及各种动画效果。最后,本章还将介绍如何优化粒子系统的性能,如何打包和部署项目。 二、WebGL与Three.js基础 2.1 WebGL概述 WebGL是一种基于OpenGL ES的Web图形库,允许开发者在Web浏览器中使用GPU加速渲染3D图形。WebGL的核心是着色器语言(GLSL)

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

在现代前端开发中,从设计稿到可用页面的交付往往需要大量重复劳动:切图、手写样式、布局调整……而借助 MCP Server - Figma AI Bridge,我们可以将 Figma 设计稿自动转换成整洁的 HTML/CSS/JS 代码,并立即生成可预览的网页。一键化、傻瓜式操作,让设计交付效率跃升。 本文测试使用的系统环境如下: * Trae IDE 版本:2.4.5 * macOS 版本:14.7 * Node.js 版本:24.6.0 * npx 版本:11.5.2 * Python 版本:3.13.3

Vibe Coding - 面向 Web 全栈开发者的 Claude Agent Skills 入门与实战

Vibe Coding - 面向 Web 全栈开发者的 Claude Agent Skills 入门与实战

文章目录 * 引言:当 AI 助手开始“长出团队习惯” * 一、核心概念速通:Agent Skills、Claude.md、MCP、子代理各负责什么 * 1.1 Agent Skills 是什么? * 1.2 Progressive Disclosure:不再“把所有文档一次性喂给模型” * 1.3 Claude.md:项目说明书,不是技能 * 1.4 MCP:把 GitHub、数据库、SaaS 全接进来 * 1.5 子代理(Subagents):带专职角色的小团队成员 * 二、从 Claude 视角理解 Agent Skills

Flutter 组件 inappwebview_cookie_manager 适配 鸿蒙Harmony 实战 - 驾驭核心大 Web 容器缓存隧道、构建金融级政企应用绝对防串号跨域大隔离基座

Flutter 组件 inappwebview_cookie_manager 适配 鸿蒙Harmony 实战 - 驾驭核心大 Web 容器缓存隧道、构建金融级政企应用绝对防串号跨域大隔离基座

Flutter 组件 inappwebview_cookie_manager 适配鸿蒙 HarmonyOS 实战:构建金融级政企应用的绝对防串号、跨域隔离基座 前言 在鸿蒙(OpenHarmony)生态全面爆发的元年,尤其是在涉及极高密级的政务信创办公系统,或是动辄千万流水、每日亿级请求的金融级应用中,一个核心的安全问题浮出水面:“如何在原生系统底层、Flutter 视图层,以及那些杂乱不可控的第三方或历史遗留的 Web/H5 容器之间,实现身份Cookie或核心Token的绝对安全、单向透传,并具备强力的清理能力?” 这个问题一旦处理不当,哪怕只是露出一丝缝隙,都可能在极短时间内引发全应用的恶性串号、账目混乱,甚至导致严重的数据越权泄露,成为整个系统的“核爆级”架构黑洞。 如果你的前端团队仍然只是粗糙地打开一个毫无防护的 WebView,并天真地指望业务层每次都能主动、无遗漏地手动清理缓存和密码,那么你的应用在断网重连、异地登录或多并发场景下,极易因 Session 未能彻底清除而发生严重的“串绑撞车”事故。更可怕的是,由于缺乏统一管控,各类敏感