Skip to content

🚀 使用 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 可用空间(模型文件占用较大)

环境检查

  1. 检查 Docker 服务状态 bash systemctl status docker 确保 Docker 服务处于 active (running) 状态

  2. 检查 Docker 版本 bash docker -v 确保版本为 24.0.5 或更高

  3. 检查 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   #内部网络,无需提前创建

关键配置说明

  1. 网络配置:使用自定义的 ollama-docker 网络,确保容器间通信
  2. 端口映射
  3. Ollama API 服务映射到宿主机的 11434 端口
  4. Open WebUI 服务映射到宿主机的 8083 端口
  5. 数据持久化
  6. Ollama 模型数据:./ollama/models:/root/.ollama
  7. Open WebUI 应用数据:./open-webui/data:/app/backend/data
  8. 资源限制
  9. Ollama 服务:12 CPU 核心 + 16GB 内存
  10. Open WebUI 服务:7 CPU 核心 + 2GB 内存
  11. 服务依赖:Open WebUI 依赖于 Ollama 服务

架构说明: - Ollama:模型运行引擎,负责加载和运行大语言模型 - Open WebUI:Web 用户界面,提供直观的聊天和模型管理界面

🚀 启动与验证

拉取镜像并启动服务

docker compose up -d

验证服务状态

  1. 检查容器运行状态 bash docker ps 应该看到 2 个服务都处于 Up 状态

  2. 查看服务日志 ```bash # 查看 Ollama 日志 docker compose logs ollama

# 查看 Open WebUI 日志
docker compose logs open-webui ```

  1. 验证 Ollama 服务 bash curl http://localhost:11434/api/tags 如果返回 JSON 格式的模型列表(可能为空),说明服务正常

  2. 访问 Web 界面 在浏览器中访问 http://你的服务器IP:8083

初始设置

首次访问 Open WebUI 会显示注册页面: - 创建管理员账户(用户名和密码) - 登录后进入主界面

🔌 基础配置与使用

下载和管理模型

  1. 通过 Open WebUI 下载模型
  2. 登录 Open WebUI
  3. 点击左上角模型选择框
  4. 点击 "Download Model"
  5. 输入模型名称(如 llama3.1:8bqwen2.5:7b 等)
  6. 等待下载完成

  7. 通过命令行下载模型 bash # 进入 Ollama 容器 docker exec -it ollama ollama pull llama3.1:8b

  8. 常用模型推荐

  9. 轻量级llama3.2:3bqwen2.5:0.5b
  10. 平衡型llama3.1:8bqwen2.5:7b
  11. 高性能deepseek-coder:33b

Open WebUI 主要功能

功能模块 描述 使用场景
聊天对话 与模型进行多轮对话 日常问答、技术支持
模型管理 查看已下载模型、下载新模型 模型切换和管理
对话历史 保存和查看历史对话记录 知识积累和回顾
参数调整 调整温度、top-p 等生成参数 控制回答创造性
RAG 支持 上传文档构建知识库 专业领域问答

基础 API 使用

Ollama 提供类 OpenAI 的 API 接口:

  1. 生成补全(Completion) bash curl http://localhost:11434/api/generate -d '{ "model": "llama3.1:8b", "prompt": "请介绍一下人工智能", "stream": false }'

  2. 聊天补全(Chat Completion) bash curl http://localhost:11434/api/chat -d '{ "model": "llama3.1:8b", "messages": [ { "role": "user", "content": "你好,请做个自我介绍" } ] }'


🛠️ 基础配置与使用2

Open-WebUI 界面友好,新手可通过以下步骤快速使用本地大模型:

1. 步骤 1:下载大模型(首次使用)

若未通过命令行下载模型,可在 WebUI 中可视化下载:

  1. 登录 WebUI,点击左侧菜单栏「模型」;
  2. 在搜索框输入模型名(如 llama3:8bmistral:7bqwen:7b),点击搜索结果右侧的「下载」;
  3. 等待下载完成(进度条 100%),模型会自动保存到 ./ollama/ollama 目录,后续可直接使用。

2. 步骤 2:创建对话(核心功能)

  1. 点击左侧「对话」→「新建对话」;
  2. 顶部选择已下载的模型(如 llama3:8b);
  3. 下方输入框输入问题(如 “写一段 Python 读取 Excel 的代码”),点击「发送」按钮;
  4. 等待模型生成回答(速度取决于硬件,CPU 推理可能需要几秒到几十秒),可在对话框下方查看历史记录。

3. 步骤 3:调整模型参数(优化回答效果)

在对话界面右侧「参数」面板,可调整关键参数(新手建议默认,进阶用户可优化):

参数名称 作用与建议值
温度(Temperature) 控制回答创意性:0.1-0.3(严谨、逻辑性强),0.7-1.0(创意性强、灵活),默认 0.7。
最大上下文长度 控制对话记忆能力:1024-4096(根据内存调整,内存不足设小,避免崩溃),默认 2048。
Top P 控制回答多样性:0.9(默认,平衡多样性与准确性,无需频繁修改)。

4. 步骤 4:多用户管理(可选)

若需多人使用,可创建普通用户并设置权限:

  1. 点击右上角头像 →「管理员面板」→「用户管理」;
  2. 点击「创建用户」,输入用户名、密码,选择角色(如「用户」,仅可使用模型;「管理员」可管理模型与用户);
  3. 普通用户登录后,仅能使用已下载的模型,无法修改系统配置,保障安全性。

🛠️ 维护与管理

日常维护操作

  1. 服务启动/停止 ```bash # 停止服务 docker compose down

# 启动服务 docker compose up -d ```

  1. 数据备份 bash # 备份模型和数据 tar -czf ollama-backup-$(date +%Y%m%d).tar.gz ./ollama ./open-webui

  2. 服务更新 ```bash # 进入部署目录 cd /data/ollama-webui

# 拉取最新镜像 docker compose pull

# 重启服务 docker compose down docker compose up -d ```

监控与日志

  1. 查看实时日志 bash docker compose logs -f [服务名]

  2. 监控资源使用 bash docker stats

  3. 检查模型状态 ```bash # 列出已下载模型 docker exec -it ollama ollama list

# 查看运行中的模型 docker exec -it ollama ollama ps ```

性能优化建议

  1. GPU 加速(如有 NVIDIA GPU)
  2. 安装 NVIDIA 容器工具包
  3. docker-compose.yml 中添加: yaml ollama: runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all

  4. 模型量化(减少内存占用) bash # 量化模型(示例) docker exec -it ollama ollama pull qwen2.5:7b-q4_1

  5. 调整并发参数 ```bash # 在环境变量中设置(如需调整可添加到docker-compose.yml) environment:

    • OLLAMA_NUM_PARALLEL=4
    • OLLAMA_MAX_QUEUE=256 ```

🐛 常见问题排查

1. 容器启动失败

问题现象docker ps 显示容器状态不是 Up

解决方案: - 检查日志:docker compose logs [服务名] - 验证端口占用:netstat -tulpn | grep 11434netstat -tulpn | grep 8083 - 检查镜像拉取:docker images | grep ollamadocker 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 lsdocker network inspect ollama-docker - 验证环境变量配置:确保 environment 中的 API 地址正确 - 重启服务:docker compose restart

5. 内存不足问题

问题现象:容器异常退出或模型加载失败

解决方案: - 检查系统内存:free -h - 调整资源限制:在 docker-compose.yml 中增加内存限制 - 使用更小的模型:如从 7B 模型切换到 3B 模型

6. 性能问题

问题现象:响应速度慢或并发处理能力差

解决方案: - 增加 CPU/内存资源 - 启用 GPU 加速(如有条件) - 调整 Ollama 并发参数

通过本教程,您应该已经成功部署并配置了 Ollama 与 Open WebUI,现在可以在本地环境中体验各种大语言模型的能力了。如果在使用过程中遇到其他问题,可以参考项目官方文档或社区支持资源。