OpenWebUI + Ollama Docker 部署完整指南
手把手教你用 Docker 在本地或 PVE 虚拟机中部署 OpenWebUI,配合 Ollama 实现本地大模型对话。支持 GPU 加速配置、NVIDIA CUDA、AMD ROCm 双平台。
本指南涵盖从环境准备、Docker 安装、Ollama 模型服务部署、到 OpenWebUI 前端配置的完整流程。无论你用的是 NVIDIA GPU、AMD GPU 还是纯 CPU 环境,都能找到对应的方案。
Table of Contents
环境准备
在开始之前,确保你的设备满足以下条件:
- 硬件:至少 8GB RAM,推荐 16GB;NVIDIA GPU(GTX 1060 以上)或 AMD GPU(RX 5700 以上)可选
- 操作系统:Ubuntu 20.04+ / Debian 11+ / Windows 11 (WSL2) / macOS 12+
- 网络:能访问 Hugging Face 下载模型(约 3-10GB/模型)
推荐环境
如果你有 PVE(Proxmox VE)虚拟化平台,推荐在虚拟机中运行 Ubuntu Server 22.04,分配 4 核 + 16GB 内存 + GPU 直通。这样不影响宿主机使用。
如果你有 PVE(Proxmox VE)虚拟化平台,推荐在虚拟机中运行 Ubuntu Server 22.04,分配 4 核 + 16GB 内存 + GPU 直通。这样不影响宿主机使用。
安装 Docker 和 Docker Compose
Ubuntu / Debian
$
curl -fsSL https://get.docker.com | sh && sudo systemctl enable docker && sudo systemctl start docker验证 Docker
$
docker --version && docker compose version输出类似:
Docker version 26.1.0, build 9714adc
Docker Compose version v2.27.0
非 root 用户运行 Docker
$
sudo usermod -aG docker $USER && newgrp docker部署 Ollama 模型服务
Ollama 是最简单的本地大模型运行方式,支持 100+ 开源模型(Llama 3、Qwen、Mistral、Gemma 等)。
Docker 方式运行 Ollama
$
docker run -d \
--name ollama \
-v ollama:/root/.ollama \
-p 11434:11434 \
--restart unless-stopped \
ollama/ollama:latest下载第一个模型
Ollama 启动后,需要下载模型。推荐从轻量模型开始测试:
$
docker exec -it ollama ollama pull llama3.2:3b常见模型推荐(按硬件配置选择):
| 模型 | 显存 | 适用场景 |
|---|---|---|
llama3.2:3b |
4GB+ | 日常对话、代码 |
qwen2.5:7b |
6GB+ | 中文对话、推理 |
mistral:7b |
6GB+ | 通用对话、写作 |
codellama:13b |
10GB+ | 代码生成、补全 |
测试 Ollama API
$
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "Say hello in 10 words",
"stream": false
}'部署 OpenWebUI
OpenWebUI 是目前最优秀的开源 AI 对话前端,支持多用户、模型管理、RAG、知识库等企业级功能。
使用 Docker Compose 部署
创建 docker-compose.yml:
version: '3.8'
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
- WEBUI_SECRET_KEY=your-secret-key-here
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- openwebui:/app/backend/data
depends_on:
- ollama
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
# GPU 支持(NVIDIA)
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
openwebui:
ollama:
启动服务
$
docker compose up -d
部署成功!
打开浏览器访问 http://localhost:3000,首次需要注册管理员账号。
打开浏览器访问 http://localhost:3000,首次需要注册管理员账号。
GPU 加速配置
NVIDIA GPU(CUDA)
确保宿主机已安装 NVIDIA Driver + CUDA Toolkit:
$
nvidia-smiDocker 需要 NVIDIA Container Toolkit:
$
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$(. /etc/os-release;echo $ID$VERSION_ID)/nvidia-docker.list | \
sed 's#deb https#deb [signed-by=/usr/share/keyrings/nvidia.gpg] https#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker然后在 docker-compose.yml 中 Ollama 服务添加:
services:
ollama:
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
AMD GPU(ROCm)
AMD GPU 用户使用 ROCm 运行时:
services:
ollama:
image: ollama/ollama:rocm
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
devices:
- /dev/kfd
- /dev/dri
group_add:
- video
environment:
- HSA_OVERRIDE_GFX_VERSION=11.0.0
- OLLAMA_MODELS=/root/.ollama/models
PVE 虚拟机部署
创建虚拟机
- 操作系统:Ubuntu Server 22.04 LTS
- CPU:4 核(可分配更多)
- 内存:16GB+
- 硬盘:64GB+(qcow2 格式)
- 网络:桥接模式(BR0)
GPU 直通(PCIe Passthrough)
$
# 查看 GPU 设备 ID
lspci | grep -i nvidia
# 在 PVE Web UI → VM → Hardware → Add → PCIe Device → 选择 GPU
GPU 直通注意事项
核显必须保留用于 headless 显示。主板需开启 IOMMU。BIOS 中禁用 CSM。建议参考 PVE Wiki 的 GPU Passthrough 完整配置。
核显必须保留用于 headless 显示。主板需开启 IOMMU。BIOS 中禁用 CSM。建议参考 PVE Wiki 的 GPU Passthrough 完整配置。
验证与测试
检查服务状态
$
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"测试 GPU 加速
$
# 观察 GPU 显存使用
watch -n1 nvidia-smi
# 在 OpenWebUI 中发送一条消息,确认显存有变化常见问题与优化
Q: 容器无法启动,报错 "port already in use"
端口 11434 或 3000 已被占用:
$
sudo lsof -i :11434
docker compose down && docker compose up -dQ: 模型下载很慢
设置国内镜像源:
$
export OLLAMA_HOST=https://ollama.ai
# 或修改 /etc/docker/daemon.json 添加镜像加速Q: 内存不足(OOM)
减少 Ollama 并发数:
$
docker exec -it ollama ollama show llama3.2:3b
# 或者使用更小的量化模型,如 llama3.2:1b性能优化建议
- 使用
ollama pull预下载模型,避免运行时下载阻塞 - 启用 Ollama 的
OLLAMA_NUM_PARALLEL=2限制并发数 - OpenWebUI 中开启 Request Timeout 防止长响应占用资源
- 使用
watch -n 1 docker stats监控资源使用
Advertisement