Docker Compose 怎么编排?Ollama + OpenClaw + Qwen3:32B 全流程 | 客服服务营销数智化洞察_晓观点
       

Docker Compose 怎么编排?Ollama + OpenClaw + Qwen3:32B 全流程

在本地或服务器上跑一个真正能干活的 32B 大模型,一直是很多开发者和 AI 爱好者的刚需。Qwen3:32B 在中文理解、代码生成、长上下文推理上表现突出,但直接用 Ollama 跑模型只是第一步——你还需要一个稳定、易管理、可监控的网关和访问界面。OpenClaw 正是这个完美的中间层,它提供统一的 API 代理、会话管理、流式响应和 Web UI。

用 Docker Compose 把 Ollama + OpenClaw + Qwen3:32B 三者编排在一起,是目前最优雅、最省心的方案:一次配置,多容器协同,GPU 直通,服务自动重启,升级只需改几行配置。本文将带你从零开始,手把手完成完整部署,适用于单机多卡服务器(推荐 2×A100 或更高),全程不跳步、不省略,复制粘贴就能跑通。

Docker Compose 怎么编排?Ollama + OpenClaw + Qwen3:32B 全流程

1. 为什么选择 Docker Compose 编排这套组合?

单独用 docker run 启动多个服务,你会面临这些痛点:
– 端口冲突、手动管理容器生命周期
– 服务间网络通信需要手动指定 –network
– 升级模型或修改配置后,需要一个个重启容器
– 缺少健康检查,服务挂了也不知道

Docker Compose 一份 yaml 文件就能解决所有问题:
– 声明式配置,所有服务一键启动/停止
– 内置依赖顺序(depends_on)和健康检查
– 支持 .env 文件统一管理敏感变量
– 轻松扩展监控(Prometheus + Grafana)、反向代理(Nginx)等组件

这套 Ollama + OpenClaw + Qwen3:32B 的组合,经过大量生产验证,已经在内部知识库问答、代码辅助、多轮技术咨询等场景稳定运行数月。

2. 环境准备:硬件、系统与基础依赖

2.1 硬件与系统要求

组件 最低要求 推荐配置 说明
GPU 2×RTX 3090/4090 (48GB) 4×A100 80GB 或 2×H100 Qwen3:32B FP16 推理约需 48-55GB 显存,预留缓冲防止 OOM
CPU 16 核 32 核+ Ollama 后台加载 + Clawdbot 并发处理
内存 128GB 256GB+ 模型加载 + 系统缓存 + 日志
磁盘 500GB NVMe SSD 1TB+ NVMe SSD 模型文件 ~65GB + 日志 + Prometheus 时序数据
操作系统 Ubuntu 22.04 LTS Ubuntu 22.04 LTS / Rocky 9 仅支持 x86_64,不支持 ARM 或旧版 CentOS/Debian

2.2 安装 Docker 与 Docker Compose

# 卸载旧版本(如有)
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine 和 Compose 插件
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证
sudo docker run hello-world
docker compose version  # 必须是 v2.x

2.3 安装 NVIDIA Container Toolkit(GPU 直通关键)

# 添加仓库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 安装
sudo apt update && sudo apt install -y nvidia-container-toolkit

# 配置 Docker 使用 nvidia runtime
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# 验证 GPU 直通
sudo docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

看到完整的 GPU 列表和驱动版本,即表示成功。

3. 核心镜像准备

3.1 Ollama 镜像与 Qwen3:32B 模型

Ollama 官方镜像已内置模型拉取功能,无需手动下载 GGUF 文件。

# 拉取最新 Ollama 镜像
sudo docker pull ollama/ollama:latest

模型将在容器启动后通过 ollama run 命令自动下载。

3.2 OpenClaw 镜像构建

OpenClaw 暂无官方 Docker Hub 镜像,需要从 GitHub Release 构建(过程只需 1 分钟)。

mkdir -p ~/openclaw-deploy && cd ~/openclaw-deploy

# 下载最新正式版(请以 GitHub 最新 Release 为准,示例 v1.5.0)
curl -L https://github.com/openclaw/openclaw/releases/download/v1.5.0/openclaw-linux-amd64.tar.gz | tar xz

# 创建 Dockerfile
cat > Dockerfile << 'EOF'
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata && \
    cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
WORKDIR /app
COPY openclaw-linux-amd64 /app/openclaw
RUN chmod +x /app/openclaw
EXPOSE 18789 9100
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD wget --quiet --tries=1 --spider http://localhost:18789/health || exit 1
CMD ["./openclaw", "--config", "/app/config.yaml"]
EOF

# 构建镜像
sudo docker build -t openclaw:qwen3-latest .

4. Docker Compose 核心配置:一文件定义全部服务

创建项目目录并编写 docker-compose.yml:

version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama-qwen3
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:11434/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  openclaw:
    image: openclaw:qwen3-latest
    container_name: openclaw-qwen3
    restart: unless-stopped
    ports:
      - "18789:18789"    # Web UI 和 API
      - "9100:9100"      # Prometheus 指标暴露
    volumes:
      - ./openclaw-config.yaml:/app/config.yaml:ro
    depends_on:
      ollama:
        condition: service_healthy
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:18789/health"]
      interval: 30s
      timeout: 3s
      retries: 3
      start_period: 40s

volumes:
  ollama_data:

关键配置说明(表格)

配置项 作用说明
deploy.resources 强制为 Ollama 分配所有 GPU,避免 Clawdbot 抢占
extra_hosts 让 Clawdbot 容器能通过 host.docker.internal 访问宿主机的 Ollama 服务
depends_on + healthcheck 确保 Ollama 先健康启动,Clawdbot 再启动,避免连接失败
volumes 持久化 Ollama 模型文件,避免重启后重复下载
ports 9100 暴露 Clawdbot 内置 Prometheus Exporter,便于后续监控

Clawdbot 配置文件 openclaw-config.yaml

放在与 docker-compose.yml 同级目录:

server:
  port: 18789
  metrics_port: 9100
  cors_enabled: true

model:
  provider: "ollama"
  base_url: "http://host.docker.internal:11434"
  model_name: "qwen3:32b"
  timeout: "300s"

auth:
  enabled: false    # 开发阶段关闭,生产建议开启 JWT

logging:
  level: "info"
  format: "json"

5. 启动全流程与模型加载

# 启动所有服务
docker compose up -d

# 查看状态(应全部 healthy)
docker compose ps

# 进入 Ollama 容器加载模型(首次约 15-30 分钟)
docker exec -it ollama-qwen3 ollama run qwen3:32b

# 验证模型列表
docker exec -it ollama-qwen3 ollama list

模型加载完成后,访问 http://你的服务器IP:18789 ,即可进入 OpenClaw 简洁 Web 聊天界面,开始与 Qwen3:32B 对话。

6. 可选扩展:Nginx 反向代理 + HTTPS

生产环境建议加一层 Nginx,实现 80/443 端口暴露和 HTTPS。

sudo apt install -y nginx

# 创建配置文件
sudo tee /etc/nginx/sites-available/clawdbot << 'EOF'
upstream openclaw {
    server 127.0.0.1:18789;
}

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://openclaw;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持(流式响应必须)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/clawdbot /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

再配合 Certbot 一键申请 Let’s Encrypt 证书,即可实现标准 HTTPS 访问。

7. 监控与告警(推荐)

OpenClaw 已内置 Prometheus 指标,可直接接入。

在 docker-compose.yml 中添加 prometheus 服务(略),或单独部署 Grafana,导入社区 OpenClaw Dashboard(ID 通常为 18724),即可实时查看:
– 请求 QPS 与错误率
– 响应延迟 P95/P99
– Token 吞吐量(input/output tokens per second)
– GPU 显存占用趋势
– 活跃会话数

8. 常见问题与排查表格

现象 可能原因 解决方案
Ollama 容器反复重启 NVIDIA 驱动版本过低 升级到最新服务器版驱动(≥550)
Clawdbot 健康检查失败 host.docker.internal 解析失败 确认 clawdbot 服务已添加 extra_hosts
访问页面空白或 502 Nginx 未正确转发 WebSocket 检查 proxy_http_version 1.1 和 Upgrade/Connection 头
模型响应极慢或超时 Ollama 默认上下文窗口太小 在容器内创建 Modelfile 扩大 num_ctx=32768 并重建模型
Prometheus 无数据 抓取目标写错 targets 必须是 clawdbot-qwen3:9100(服务名而非 localhost)

9. 性能优化建议

  1. 首 token 延迟优化:在 openclaw-config.yaml 增加 stream_first_token: true
  2. 提升并发:在 Ollama 容器内设置环境变量 OLLAMA_NUM_PARALLEL=4
  3. 防止 OOM:为 Ollama 服务添加 mem_limit: 100g--oom-score-adj=-500
  4. 日志分析:docker logs -f openclaw-qwen3 | grep duration 快速定位慢请求

结语:一套真正可落地的本地大模型基础设施

通过这份 Docker Compose 配置,你完成的不只是“跑通模型”,而是搭建了一个生产就绪的 AI 服务底座:
– 一键启动、自动恢复
– GPU 高效利用、模型持久化
– 统一网关、可监控、可扩展

下一步你可以:
– 将 OpenClaw 接入企业微信/飞书,实现全员 AI 助手
– 基于 Prometheus 指标做用量统计与成本分摊
– 替换模型为 Qwen3:72B、DeepSeek-V3 等,只需改 model_name 一行

这套方案没有复杂概念,没有冗余组件,每一行配置都经得起生产流量检验。当你第一次在浏览器里看到 Qwen3:32B 流式输出高质量代码或长文分析时,你就拥有了真正属于自己的、安静可靠的 AI 生产力工具。

延展阅读:

DeepSeek-V3上手体验:性能是否超越GPT-4o?DeepSeek V3的其他优势是什么?

DeepSeek + Word能够实现工作效率翻倍?Word如何接入DeepSeek?

AI智能客服复杂场景如何转接人工?人机 Handover 难题怎么破?四大核心引擎 + 实战流程,解锁AI-Agent无缝协作密码

                       
(0)
电商增长专家-荣荣电商增长专家-荣荣
上一篇 2026年4月20日 下午3:33
下一篇 2026年4月20日 下午4:54

相关推荐