跳至正文
首页 » Docker Compose 部署 Ollama + Open WebUI:搭建私人 AI 助手

Docker Compose 部署 Ollama + Open WebUI:搭建私人 AI 助手

本文教你使用 Docker Compose 一键部署 Ollama + Open WebUI,搭建属于你自己的私有 AI 助手。包含完整配置、常用命令、GPU 加速及常见问题解答,10 分钟即可拥有数据完全可控的本地大模型服务。

为什么选择 Docker Compose?

Docker Run vs. Docker Compose

操作传统 docker runDocker Compose✅
启动 Ollamadocker run -d --name ollama -p 11434:11434 -v ollama_data:/root/.ollama ollama/ollama写入 YAML 文件
启动 WebUIdocker run -d --name open-webui -p 3000:8080 -e OLLAMA_BASE_URL=http://ollama:11434 ghcr.io/open-webui/open-webui写入 YAML 文件
重启服务分别重启两个容器docker compose restart
查看日志分别查看docker compose logs -f
迁移部署重新输入所有命令复制一个文件即可

核心理念:基础设施即代码(Infrastructure as Code)

准备工作

系统要求

  • 操作系统:Linux(Ubuntu 20.04/22.04/24.04)、macOS、Windows WSL2

  • Docker:版本 20.10+

  • 硬件:至少 8GB 内存,建议 16GB(运行 7B 模型)

安装 Docker

如果还没安装 Docker,执行以下命令:

# Ubuntu/Debian
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

#验证安装
docker --version
docker compose version

第一步:创建配置文件

1. 创建项目目录, 创建 docker-compose.yml

mkdir -p ~/ollama-webui
cd ~/ollama-webui

nano docker-compose.yml
📋
docker-compose.yml
Copy to clipboard
services:
  # Ollama 服务 - 大模型推理引擎
  ollama:
    image: ollama/ollama:latest          # 官方镜像
    container_name: ollama                # 容器名称
    restart: unless-stopped               # 自动重启
    ports:
      - "11434:11434"                     # API 端口映射
    volumes:
      - ollama_data:/root/.ollama         # 模型数据持久化
    environment:
      - OLLAMA_HOST=0.0.0.0              # 允许外部访问
    # 设置用 GPU 跑模型
    deploy:
       resources:
         reservations:
           devices:
             - driver: nvidia
               count: all
               capabilities: [gpu]

  # Open WebUI - 网页对话界面
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:8080"                       # Web 界面端口
    volumes:
      - webui_data:/app/backend/data      # 用户数据持久化
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434  # 连接 Ollama
    depends_on:
      - ollama                            # 等待 Ollama 启动

# 数据卷声明(数据独立于容器存在)
volumes:
  ollama_data:    # 存放模型文件
  webui_data:     # 存放对话记录、用户配置

💡 小贴士:服务名 ollama 可以作为主机名在容器间通信,所以 Open WebUI 用 http://ollama:11434 就能访问 Ollama。

第二步:一键启动

# 在 ~/ollama-webui 目录下执行
administrator@Newt:~/ollama-webui$ docker compose up -d

#你会看到类似输出
[+] up 2/2
 ✔ Container ollama     Running                                                                  0.0s
 ✔ Container open-webui Running                                                                  0.0s
Attaching to ollama, open-webui
open-webui  | 2026-05-05 11:17:27.364 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 198.176.56.19:38933 - "GET /_app/version.json HTTP/1.1" 200

#查看运行状态
docker compose ps

第三步:下载 AI 模型

# 下载 DeepSeek-R1 7B 模型(约 4.7GB,需耐心等待)
docker exec -it ollama ollama pull deepseek-r1:7b

# 或者下载更小的版本(内存不足时推荐)
docker exec -it ollama ollama pull deepseek-r1:1.5b

第四步:开始使用

访问 Web 界面, 在浏览器打开:http://你的服务器IP:3000

首次使用注意:

  1. 注册账号:填写任意邮箱和密码(本地账号,不会验证)

  2. 登录:进入对话界面

  3. 选择模型:左上角下拉菜单选择 deepseek-r1:7b

  4. 开始对话:输入问题,享受你的私有 AI 助手!

命令行测试(可选)

# 直接对话
docker exec -it ollama ollama run deepseek-r1:7b

# API 测试
curl http://localhost:11434/api/generate -d '{
  "model": "deepseek-r1:7b",
  "prompt": "你好,请介绍自己",
  "stream": false
}'

Docker Compose 常用命令速查

基础操作

命令 说明
docker compose up -d 后台启动所有服务
docker compose down 停止并删除容器(数据卷保留)
docker compose down -v ⚠️ 停止并删除容器 + 数据卷(会丢失模型!)
docker compose restart 重启所有服务
docker compose stop 停止所有服务
docker compose start 启动已停止的服务

查看状态

命令 说明
docker compose ps 查看容器状态
docker compose logs 查看所有日志
docker compose logs -f 实时跟踪日志
docker compose logs ollama 查看特定服务日志

容器操作

命令 说明
docker compose exec ollama ollama list 在容器内执行命令
docker compose exec ollama bash 进入容器 shell
docker compose port open-webui 8080 查看端口映射
docker rm -f ollama open-webui 删除旧容器(数据卷保留)

镜像管理

命令 说明
docker compose pull 拉取最新镜像
docker compose up -d --build 重建并启动
docker compose down --rmi all 删除容器并移除镜像

数据卷管理

命令 说明
docker volume ls 查看所有数据卷
docker volume inspect ollama_data 查看数据卷详情
docker volume prune 删除未使用的数据卷(⚠️ 会丢失数据)

资源监控

命令 说明
docker stats 查看容器资源使用
docker system df 查看 Docker 磁盘占用
docker system df -v 详细信息

常见问题解答

Q1: 端口被占用怎么办?

# 查看端口占用
sudo lsof -i :3000
sudo lsof -i :11434

# 修改 docker-compose.yml 中的端口映射
ports:
  - "3001:8080"  # 改为其他端口

Q2: 容器启动后立即退出?

# 查看日志定位问题
docker compose logs ollama
docker compose logs open-webui

Q3: Open WebUI 显示 “Ollama 连接失败”?

# 确保环境变量正确
environment:
  - OLLAMA_BASE_URL=http://ollama:11434  # 注意是服务名,不是 localhost

# 重启服务
docker compose restart

Q4: Compose如何更新到最新版本?

docker compose pull
docker compose up -d --force-recreate

Q5: 如何备份模型和对话记录?

# 备份数据卷
docker run --rm -v ollama_data:/source -v $(pwd):/backup alpine tar czf /backup/ollama_backup.tar.gz -C /source .
docker run --rm -v webui_data:/source -v $(pwd):/backup alpine tar czf /backup/webui_backup.tar.gz -C /source 

Q6: 修改为使用指定数据卷

nano docker-compose.yml

#将 volumes 部分修改为:
volumes:
  ollama_data:
    external: true
    name: ollama-data      # 使用你已有的 ollama-data 卷
  webui_data:
    external: true
    name: open-webui-data  # 使用你已有的 open-webui-data 卷

项目文件结构

~/ollama-webui/
├── docker-compose.yml          # Compose 配置文件

数据卷存储在 Docker 管理目录:

/var/lib/docker/volumes/
├── ollama_data/                # 模型文件(5GB+)
└── webui_data/                 # 对话记录、用户配置

总结

通过 Docker Compose,你只用维护一个 docker-compose.yml 文件,就能:

  • ✅ 一键部署docker compose up -d 启动整个 AI 应用栈

  • ✅ 数据持久化:模型和对话记录独立于容器,删除容器不丢数据

  • ✅ 轻松迁移:复制 YAML 文件到新服务器,一条命令恢复服务

  • ✅ 团队协作:配置文件可版本控制,分享即部署

现在,你拥有了一个完全私有的 AI 助手——数据不上云,永久免费,随时可用!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注