🚀 使用 Docker Compose 部署 Ollama 与 Open WebUI
🚀 使用 Docker Compose 部署 Ollama 与 Open WebUI
本教程将指导您使用 Docker Compose 部署 Ollama(本地大语言模型运行框架)与 Open WebUI(功能丰富的 Web 用户界面)。这是一个功能强大且隐私安全的本地 AI 解决方案,非常适合开发者和企业团队在本地环境中运行和测试大语言模型。
📝 项目简介
Ollama 是一个基于 Go 语言的本地大语言模型运行框架,采用类似 Docker 的操作方式(支持 list、pull、push、run 等命令)。它提供了一个统一的模型中立运行时,内核基于 llama.cpp,能够运行各种 AI 模型(如 LLaMA、Mistral、Phi、Gemma 等)。
核心特点: - 多模型支持:支持运行多种主流大语言模型,包括 LLaMA、Mistral、Command-R、Gemma 等 - 统一格式:使用 GGUF 格式封装模型权重,确保跨模型兼容性 - 标准 API:提供 OpenAI 风格的 API 接口,便于集成和调用 - 硬件加速:支持 GPU 加速,优化推理性能 - Web 交互:配合 Open WebUI 提供直观的网页聊天界面
🔧 部署前准备
系统环境要求
- 操作系统:Linux(推荐 Ubuntu 22.04+)
- Docker 版本:Docker 24.0.5+
- Docker Compose:版本 2.0+
- 硬件资源:
- CPU:至少 4 核心(为 Ollama 分配了 12 核心)
- 内存:至少 16GB(为 Ollama 分配了 16GB)
- 存储:至少 20GB 可用空间(模型文件占用较大)
环境检查
-
检查 Docker 服务状态
bash systemctl status docker确保 Docker 服务处于active (running)状态 -
检查 Docker 版本
bash docker -v确保版本为 24.0.5 或更高 -
检查 Docker Compose 版本
bash docker compose version确保版本为 v2.0 或更高
⚙️ 配置 Docker Compose
创建部署目录
mkdir -p /data/ollama-webui && cd /data/ollama-webui
准备配置文件
创建 docker-compose.yml 文件,内容如下:
#version: '3.8'
services:
# 1. Ollama 服务(大模型运行引擎)
ollama:
image: ollama/ollama:latest # 官方最新镜像(自动更新模型支持)
container_name: ollama # 容器名称,便于管理
#deploy:
#resources:
#limits:
#cpus: '0.5'
#memory: 17408M
#reservations:
#cpus: '0.25'
#memory: 128M
ports:
- 11434:11434 # 端口映射:主机 11434 → 容器 11434(Ollama API 端口)
volumes:
- .:/code # 可选:挂载当前目录(无需可删除)
# 核心挂载:Ollama 模型/配置持久化(必须!否则重启容器丢失模型)
- ./ollama/ollama:/root/.ollama
#pull_policy: always
tty: true # 保持容器交互模式(Ollama 需此配置运行)
restart: always # 容器退出后自动重启(确保服务稳定)
networks:
- ollama-docker # 加入自定义网络,与 Open-WebUI 通信
deploy:
resources:
limits: # 硬件资源限制(根据自身硬件调整!)
cpus: '12' # 最多使用 12 个 CPU 核心(4核主机建议设 '3')
memory: 16G # 最多使用 16GB 内存(8GB 主机建议设 '7G')
# 2. Open-WebUI 服务(可视化交互界面)
open-webui:
# 官方镜像(main 分支为最新版,稳定版可替换为指定版本如 v0.3.94)
image: ghcr.io/open-webui/open-webui:main #dyrnq/open-webui ghcr.io/open-webui/open-webui 26
container_name: open-webui
volumes:
- ./ollama/open-webui:/app/backend/data # 核心挂载:Open-WebUI 配置/对话历史持久化
depends_on:
- ollama # 依赖 Ollama 服务(确保 Ollama 先启动)
ports:
- 8083:8080 # 端口映射:主机 8083 → 容器 8080(Web 界面访问端口)
environment:
# 关键配置:Open-WebUI 关联 Ollama API(容器内用服务名访问,无需改)
- '/ollama/api=http://ollama:11434/api'
#- 'OLLAMA_BASE_URL=http://192.168.0.30:11434'
#- 'OLLAMA_BASE_URL=http://0.0.0.0:11434'
#- '/ollama/api=http://192.168.0.30:11434/api'
#- '/ollama/api=http://*:11434/api'
#- '/ollama/api=http://192.168.0.19:7000/api'
#- '/ollama/api=http://0.0.0.0:11434/api'
extra_hosts:
- host.docker.internal:host-gateway # 支持容器访问主机网络(可选)
#restart: unless-stopped
restart: always # 容器退出后自动重启
networks:
- ollama-docker # 加入与 Ollama 相同的网络
deploy:
resources:
limits:
cpus: '7'
memory: 2G
# 自定义网络:隔离服务,确保 Ollama 与 Open-WebUI 通信
networks:
ollama-docker:
external: false #内部网络,无需提前创建
关键配置说明
- 网络配置:使用自定义的
ollama-docker网络,确保容器间通信 - 端口映射:
- Ollama API 服务映射到宿主机的 11434 端口
- Open WebUI 服务映射到宿主机的 8083 端口
- 数据持久化:
- Ollama 模型数据:
./ollama/models:/root/.ollama - Open WebUI 应用数据:
./open-webui/data:/app/backend/data - 资源限制:
- Ollama 服务:12 CPU 核心 + 16GB 内存
- Open WebUI 服务:7 CPU 核心 + 2GB 内存
- 服务依赖:Open WebUI 依赖于 Ollama 服务
架构说明: - Ollama:模型运行引擎,负责加载和运行大语言模型 - Open WebUI:Web 用户界面,提供直观的聊天和模型管理界面
🚀 启动与验证
拉取镜像并启动服务
docker compose up -d
验证服务状态
-
检查容器运行状态
bash docker ps应该看到 2 个服务都处于Up状态 -
查看服务日志 ```bash # 查看 Ollama 日志 docker compose logs ollama
# 查看 Open WebUI 日志
docker compose logs open-webui
```
-
验证 Ollama 服务
bash curl http://localhost:11434/api/tags如果返回 JSON 格式的模型列表(可能为空),说明服务正常 -
访问 Web 界面 在浏览器中访问
http://你的服务器IP:8083
初始设置
首次访问 Open WebUI 会显示注册页面: - 创建管理员账户(用户名和密码) - 登录后进入主界面
🔌 基础配置与使用
下载和管理模型
- 通过 Open WebUI 下载模型
- 登录 Open WebUI
- 点击左上角模型选择框
- 点击 "Download Model"
- 输入模型名称(如
llama3.1:8b、qwen2.5:7b等) -
等待下载完成
-
通过命令行下载模型
bash # 进入 Ollama 容器 docker exec -it ollama ollama pull llama3.1:8b -
常用模型推荐
- 轻量级:
llama3.2:3b、qwen2.5:0.5b - 平衡型:
llama3.1:8b、qwen2.5:7b - 高性能:
deepseek-coder:33b
Open WebUI 主要功能
| 功能模块 | 描述 | 使用场景 |
|---|---|---|
| 聊天对话 | 与模型进行多轮对话 | 日常问答、技术支持 |
| 模型管理 | 查看已下载模型、下载新模型 | 模型切换和管理 |
| 对话历史 | 保存和查看历史对话记录 | 知识积累和回顾 |
| 参数调整 | 调整温度、top-p 等生成参数 | 控制回答创造性 |
| RAG 支持 | 上传文档构建知识库 | 专业领域问答 |
基础 API 使用
Ollama 提供类 OpenAI 的 API 接口:
-
生成补全(Completion)
bash curl http://localhost:11434/api/generate -d '{ "model": "llama3.1:8b", "prompt": "请介绍一下人工智能", "stream": false }' -
聊天补全(Chat Completion)
bash curl http://localhost:11434/api/chat -d '{ "model": "llama3.1:8b", "messages": [ { "role": "user", "content": "你好,请做个自我介绍" } ] }'
🛠️ 基础配置与使用2
Open-WebUI 界面友好,新手可通过以下步骤快速使用本地大模型:
1. 步骤 1:下载大模型(首次使用)
若未通过命令行下载模型,可在 WebUI 中可视化下载:
- 登录 WebUI,点击左侧菜单栏「模型」;
- 在搜索框输入模型名(如
llama3:8b、mistral:7b、qwen:7b),点击搜索结果右侧的「下载」; - 等待下载完成(进度条 100%),模型会自动保存到
./ollama/ollama目录,后续可直接使用。
2. 步骤 2:创建对话(核心功能)
- 点击左侧「对话」→「新建对话」;
- 顶部选择已下载的模型(如
llama3:8b); - 下方输入框输入问题(如 “写一段 Python 读取 Excel 的代码”),点击「发送」按钮;
- 等待模型生成回答(速度取决于硬件,CPU 推理可能需要几秒到几十秒),可在对话框下方查看历史记录。
3. 步骤 3:调整模型参数(优化回答效果)
在对话界面右侧「参数」面板,可调整关键参数(新手建议默认,进阶用户可优化):
| 参数名称 | 作用与建议值 |
|---|---|
| 温度(Temperature) | 控制回答创意性:0.1-0.3(严谨、逻辑性强),0.7-1.0(创意性强、灵活),默认 0.7。 |
| 最大上下文长度 | 控制对话记忆能力:1024-4096(根据内存调整,内存不足设小,避免崩溃),默认 2048。 |
| Top P | 控制回答多样性:0.9(默认,平衡多样性与准确性,无需频繁修改)。 |
4. 步骤 4:多用户管理(可选)
若需多人使用,可创建普通用户并设置权限:
- 点击右上角头像 →「管理员面板」→「用户管理」;
- 点击「创建用户」,输入用户名、密码,选择角色(如「用户」,仅可使用模型;「管理员」可管理模型与用户);
- 普通用户登录后,仅能使用已下载的模型,无法修改系统配置,保障安全性。
🛠️ 维护与管理
日常维护操作
- 服务启动/停止 ```bash # 停止服务 docker compose down
# 启动服务 docker compose up -d ```
-
数据备份
bash # 备份模型和数据 tar -czf ollama-backup-$(date +%Y%m%d).tar.gz ./ollama ./open-webui -
服务更新 ```bash # 进入部署目录 cd /data/ollama-webui
# 拉取最新镜像 docker compose pull
# 重启服务 docker compose down docker compose up -d ```
监控与日志
-
查看实时日志
bash docker compose logs -f [服务名] -
监控资源使用
bash docker stats -
检查模型状态 ```bash # 列出已下载模型 docker exec -it ollama ollama list
# 查看运行中的模型 docker exec -it ollama ollama ps ```
性能优化建议
- GPU 加速(如有 NVIDIA GPU)
- 安装 NVIDIA 容器工具包
-
在
docker-compose.yml中添加:yaml ollama: runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all -
模型量化(减少内存占用)
bash # 量化模型(示例) docker exec -it ollama ollama pull qwen2.5:7b-q4_1 -
调整并发参数 ```bash # 在环境变量中设置(如需调整可添加到docker-compose.yml) environment:
- OLLAMA_NUM_PARALLEL=4
- OLLAMA_MAX_QUEUE=256 ```
🐛 常见问题排查
1. 容器启动失败
问题现象:docker ps 显示容器状态不是 Up
解决方案:
- 检查日志:docker compose logs [服务名]
- 验证端口占用:netstat -tulpn | grep 11434 或 netstat -tulpn | grep 8083
- 检查镜像拉取:docker images | grep ollama 和 docker images | grep open-webui
2. 无法访问 Web 界面
问题现象:浏览器访问 http://IP:8083 无响应
解决方案:
- 检查防火墙设置:
bash
# 开放 8083 端口
ufw allow 8083
- 验证服务状态:curl http://localhost:8083(在服务器本地)
3. 模型下载失败
问题现象:模型下载过程中断或报错
解决方案:
- 检查网络连接
- 验证磁盘空间:df -h
- 尝试重新下载:docker exec -it ollama ollama pull [模型名]
4. WebUI 无法连接 Ollama
问题现象:Open WebUI 显示 "无法连接到 Ollama"
解决方案:
- 检查容器网络:docker network ls 和 docker network inspect ollama-docker
- 验证环境变量配置:确保 environment 中的 API 地址正确
- 重启服务:docker compose restart
5. 内存不足问题
问题现象:容器异常退出或模型加载失败
解决方案:
- 检查系统内存:free -h
- 调整资源限制:在 docker-compose.yml 中增加内存限制
- 使用更小的模型:如从 7B 模型切换到 3B 模型
6. 性能问题
问题现象:响应速度慢或并发处理能力差
解决方案: - 增加 CPU/内存资源 - 启用 GPU 加速(如有条件) - 调整 Ollama 并发参数
通过本教程,您应该已经成功部署并配置了 Ollama 与 Open WebUI,现在可以在本地环境中体验各种大语言模型的能力了。如果在使用过程中遇到其他问题,可以参考项目官方文档或社区支持资源。