🐳

OpenWebUI + Ollama Docker 部署完整指南

手把手教你用 Docker 在本地或 PVE 虚拟机中部署 OpenWebUI,配合 Ollama 实现本地大模型对话。支持 GPU 加速配置、NVIDIA CUDA、AMD ROCm 双平台。

OpenWebUI Docker Ollama PVE GPU

本指南涵盖从环境准备、Docker 安装、Ollama 模型服务部署、到 OpenWebUI 前端配置的完整流程。无论你用的是 NVIDIA GPU、AMD GPU 还是纯 CPU 环境,都能找到对应的方案。

环境准备

在开始之前,确保你的设备满足以下条件:

💡
推荐环境
如果你有 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
⚠️
GPU 用户注意
如果需要 GPU 加速,需要添加 --gpus all 参数。详细配置见 GPU 加速配置 章节。

下载第一个模型

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,首次需要注册管理员账号。

GPU 加速配置

NVIDIA GPU(CUDA)

确保宿主机已安装 NVIDIA Driver + CUDA Toolkit:

$
nvidia-smi

Docker 需要 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 虚拟机部署

创建虚拟机

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 完整配置。

验证与测试

检查服务状态

$
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 -d

Q: 模型下载很慢

设置国内镜像源:

$
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

性能优化建议

Advertisement