在本地或服务器上跑一个真正能干活的 32B 大模型,一直是很多开发者和 AI 爱好者的刚需。Qwen3:32B 在中文理解、代码生成、长上下文推理上表现突出,但直接用 Ollama 跑模型只是第一步——你还需要一个稳定、易管理、可监控的网关和访问界面。OpenClaw 正是这个完美的中间层,它提供统一的 API 代理、会话管理、流式响应和 Web UI。
用 Docker Compose 把 Ollama + OpenClaw + Qwen3:32B 三者编排在一起,是目前最优雅、最省心的方案:一次配置,多容器协同,GPU 直通,服务自动重启,升级只需改几行配置。本文将带你从零开始,手把手完成完整部署,适用于单机多卡服务器(推荐 2×A100 或更高),全程不跳步、不省略,复制粘贴就能跑通。

文章导航
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. 性能优化建议
- 首 token 延迟优化:在 openclaw-config.yaml 增加
stream_first_token: true - 提升并发:在 Ollama 容器内设置环境变量
OLLAMA_NUM_PARALLEL=4 - 防止 OOM:为 Ollama 服务添加
mem_limit: 100g和--oom-score-adj=-500 - 日志分析:
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无缝协作密码