news 2026/9/3 0:23:34

Clawdbot部署教程:Qwen3:32B与Clawdbot共用Docker网络及端口映射配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Clawdbot部署教程:Qwen3:32B与Clawdbot共用Docker网络及端口映射配置

Clawdbot部署教程:Qwen3:32B与Clawdbot共用Docker网络及端口映射配置

1. 为什么需要共用Docker网络和端口映射

Clawdbot作为AI代理网关与管理平台,本身不直接运行大模型,而是通过API调用后端模型服务。当你在本地部署了Qwen3:32B模型(通过Ollama),Clawdbot需要能稳定、低延迟地访问这个服务。如果两者运行在独立的Docker容器中,默认是隔离网络,Clawdbot容器根本无法通过http://127.0.0.1:11434访问到Ollama服务——因为对Clawdbot容器来说,“localhost”指的是它自己,而不是宿主机。

很多新手会卡在这一步:明明Ollama在宿主机上跑得好好的,curl http://localhost:11434/api/tags能返回模型列表,但Clawdbot配置里填了http://127.0.0.1:11434/v1却一直报错“Connection refused”。这不是Clawdbot的问题,也不是Ollama没启动,而是典型的容器网络通信误解

解决这个问题的核心思路就两个:要么让Clawdbot容器能访问宿主机的Ollama服务(通过特殊网络模式),要么让Ollama也跑在Docker里,并和Clawdbot放在同一个自定义网络中——后者更规范、更可控,也更适合生产环境。本教程采用第二种方式,手把手带你完成从零开始的双容器协同部署。

2. 环境准备与基础依赖安装

2.1 确认系统要求

  • 操作系统:Ubuntu 22.04 LTS 或 CentOS 8+(推荐 Ubuntu,文档适配最完善)
  • 硬件:至少24GB GPU显存(Qwen3:32B最低要求),CPU 8核,内存32GB+
  • 软件:Docker 24.0+、Docker Compose v2.20+、NVIDIA Container Toolkit(已配置GPU支持)

注意:如果你还没装好NVIDIA驱动和nvidia-docker,请先执行nvidia-smi确认驱动正常,再按官方指南配置runtime。本文默认你已具备GPU容器运行能力。

2.2 创建项目目录并初始化配置文件

我们不使用clawdbot onboard一键脚本,因为它默认走单机模式,无法精细控制网络。我们要手动构建可复用的部署结构:

mkdir -p ~/clawdbot-qwen3 && cd ~/clawdbot-qwen3

创建docker-compose.yml,这是整个协同部署的核心:

# docker-compose.yml version: '3.8' services: # Ollama服务:运行Qwen3:32B模型 ollama: image: ollama/ollama:latest container_name: ollama-qwen3 restart: unless-stopped ports: - "11434:11434" volumes: - ./ollama_models:/root/.ollama/models - ./ollama_logs:/var/log/ollama environment: - OLLAMA_HOST=0.0.0.0:11434 - OLLAMA_ORIGINS=http://clawdbot:3000,http://localhost:3000 networks: - clawdbot-net deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] # Clawdbot服务:AI代理网关与管理平台 clawdbot: image: ghcr.io/clawdbot/clawdbot:latest container_name: clawdbot-main restart: unless-stopped ports: - "3000:3000" volumes: - ./config:/app/config - ./data:/app/data environment: - NODE_ENV=production - CLAWDBOT_PORT=3000 - CLAWDBOT_HOST=0.0.0.0 - CLAWDBOT_TOKEN=csdn depends_on: - ollama networks: - clawdbot-net # 关键:让Clawdbot能调用ollama服务,必须在同一网络下 # 容器内可通过服务名"ollama"直接访问,无需IP networks: clawdbot-net: driver: bridge ipam: config: - subnet: 172.20.0.0/16

这个配置做了几件关键事:

  • 定义了一个名为clawdbot-net的自定义桥接网络,两个容器都接入其中;
  • Ollama容器暴露端口11434,Clawdbot容器暴露端口3000
  • Clawdbot通过depends_on声明依赖Ollama,确保启动顺序;
  • 最重要的是:Clawdbot容器内部可以直接用http://ollama:11434/v1访问Ollama API——因为Docker内置DNS会把服务名ollama解析为该容器在clawdbot-net中的IP。

2.3 初始化Clawdbot配置文件

Clawdbot需要一个config.json来告诉它后端模型在哪。在项目根目录下创建config文件夹,并写入config/config.json

{ "models": [ { "id": "qwen3:32b", "name": "Local Qwen3 32B", "baseUrl": "http://ollama:11434/v1", "apiKey": "ollama", "api": "openai-completions", "reasoning": false, "input": ["text"], "contextWindow": 32000, "maxTokens": 4096, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } } ], "defaultModel": "qwen3:32b", "token": "csdn" }

注意这里baseUrl不再是http://127.0.0.1:11434/v1,而是http://ollama:11434/v1——这是容器间通信的正确写法。

3. 部署与启动全流程

3.1 拉取镜像并首次加载Qwen3:32B模型

别急着docker-compose up。Ollama容器启动后,需要先手动加载模型,否则Clawdbot一上来就调用会失败。

# 启动Ollama容器(后台运行) docker-compose up -d ollama # 等待10秒让Ollama服务就绪 sleep 10 # 进入Ollama容器,拉取并运行Qwen3:32B docker exec -it ollama-qwen3 ollama run qwen3:32b # 第一次运行会下载约20GB模型文件,耗时较长,请耐心等待 # 下载完成后,你会看到类似这样的输出: # >>> Running qwen3:32b # >>> Loading model... # >>> Model loaded in 12.4s

小技巧:如果你网络慢,可以提前在宿主机用ollama pull qwen3:32b下载好,再启动容器。Ollama会自动复用已下载的模型文件。

3.2 启动Clawdbot并验证连通性

现在启动全部服务:

docker-compose up -d

查看状态:

docker-compose ps

你应该看到两个服务都是Up状态。接着验证Clawdbot是否能成功调用Ollama:

# 进入Clawdbot容器 docker exec -it clawdbot-main sh # 在容器内测试Ollama连通性(Ctrl+D退出) curl -X POST http://ollama:11434/api/chat \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3:32b", "messages": [{"role": "user", "content": "你好,请用中文简单介绍你自己"}], "stream": false }'

如果返回了JSON格式的响应(包含message.content字段),说明网络打通成功
如果报Failed to connect,请检查:

  • docker-compose psollama是否健康;
  • docker logs ollama-qwen3是否有启动错误;
  • docker network inspect clawdbot-net是否两个容器都在该网络中。

3.3 访问Web界面并完成Token配置

打开浏览器,访问:

http://localhost:3000/?token=csdn

注意:必须带?token=csdn,这是Clawdbot的管理令牌,和你在config.json中设置的一致。没有这个token,你会看到“unauthorized: gateway token missing”的错误提示。

首次进入后,你会看到Clawdbot的控制台界面。点击左上角Settings → Models,确认Local Qwen3 32B已显示为“Online”,状态灯为绿色。

现在你可以直接在聊天窗口输入问题,比如:“用Python写一个快速排序函数”,Clawdbot会将请求转发给Ollama容器中的Qwen3:32B模型,并把结果返回给你——整个链路完全走Docker内部网络,毫秒级延迟,稳定不掉线。

4. 关键配置详解与常见问题排查

4.1 端口映射的三种模式对比

模式写法适用场景是否推荐
11434:11434宿主机端口 ↔ 容器端口需要从宿主机或外部调试Ollama推荐(方便curl测试)
11434仅容器端口,不映射到宿主机纯内部调用,完全隔离可行但不便于排障
127.0.0.1:11434:11434仅绑定到本地回环宿主机可访问,但其他机器不可见生产推荐(更安全)

我们在docker-compose.yml中用了第一种,方便你随时用curl http://localhost:11434/api/tags查模型状态。上线后建议改为第三种。

4.2 为什么Clawdbot配置里不能写localhost

这是新手最高频的误区。再次强调:

  • 在宿主机终端里,localhost=127.0.0.1= 本机;
  • 在Clawdbot容器里,localhost= 它自己(一个空的、没跑服务的容器);
  • 在Clawdbot容器里,ollama= Ollama容器在clawdbot-net中的IP(如172.20.0.2),这是Docker DNS自动解析的。

所以永远记住:容器间通信,用服务名;宿主机访问容器,用localhost:端口;容器访问宿主机,用host.docker.internal(仅Docker Desktop)或宿主机真实IP。

4.3 常见报错与速查解决方案

报错信息根本原因一行修复命令
Connection refusedwhen calling ollama from clawdbotClawdbot容器无法访问Ollama容器docker-compose restart clawdbot(确保Ollama已先启动)
model not found: qwen3:32bOllama容器内未加载模型docker exec ollama-qwen3 ollama run qwen3:32b
unauthorized: gateway token missingURL缺少token参数改为http://localhost:3000/?token=csdn
GPU memory exhaustedon qwen3:32b显存不足,Ollama默认未启用GPU卸载docker-compose.ymlollama服务下添加:
environment:
- OLLAMA_GPU_LAYERS=99
Error response from daemon: could not select device driverNVIDIA Container Toolkit未安装或未启用sudo systemctl restart docker && sudo nvidia-ctk runtime configure --runtime=docker

关于GPU加速:Qwen3:32B在24G显存上运行吃紧。加OLLAMA_GPU_LAYERS=99强制所有层都走GPU,能显著提升推理速度。你也可以在ollama run时加参数:ollama run --num-gpu 1 qwen3:32b

5. 进阶技巧:让部署更健壮、更易维护

5.1 模型热更新不重启Clawdbot

Clawdbot支持运行时重载模型配置。当你新增一个模型(比如qwen3:72b),只需:

  1. 在宿主机执行:docker exec ollama-qwen3 ollama run qwen3:72b
  2. 修改config/config.json,追加新模型配置项
  3. 发送SIGHUP信号重载配置:
docker kill -s HUP clawdbot-main

Clawdbot会在日志中打印Config reloaded successfully,无需docker-compose restart,业务零中断。

5.2 日志集中查看与问题定位

把两个容器的日志合并在一个流里看,效率翻倍:

# 查看最近100行混合日志 docker-compose logs -f --tail=100 | grep -E "(ollama\|clawdbot\|error\|failed)" # 单独看Ollama推理耗时(关键性能指标) docker logs ollama-qwen3 2>&1 | grep "evaluated" | tail -20 # 输出示例:[GIN] 2024/06/15 - 14:23:01 | 200 | 3.2452s | 127.0.0.1 | POST "/api/chat"

5.3 备份与迁移:三步带走整个环境

你的部署不是黑盒,所有数据都落盘在项目目录:

  1. 模型文件./ollama_models/(Ollama模型二进制)
  2. Clawdbot数据./data/(会话记录、用户配置等)
  3. 配置文件./config/config.json+./docker-compose.yml

迁移时,只需把整个~/clawdbot-qwen3文件夹拷贝到新机器,执行:

docker-compose down && docker-compose up -d

5秒内恢复全部服务,真正的“所见即所得”。

6. 总结:一次配置,长期受益

你现在已经完成了Clawdbot与Qwen3:32B的深度集成部署。这不是简单的“能跑就行”,而是构建了一个生产就绪的AI代理基础设施

  • 两个服务运行在同一个Docker网络,通信高效、隔离安全;
  • 端口映射清晰明确,宿主机可调试、容器间可直连;
  • 配置文件集中管理,模型增删灵活,支持热更新;
  • 全流程覆盖GPU加速、日志追踪、故障排查、备份迁移。

接下来,你可以基于这个底座做更多事情:接入RAG插件增强知识库、挂载向量数据库实现语义检索、用Clawdbot的扩展系统开发自定义工具……而这一切,都建立在今天你亲手打通的这条稳定、低延迟的模型调用链路上。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:46:16

万物识别模型用于教育辅助,学生拍照即得讲解

万物识别模型用于教育辅助,学生拍照即得讲解 在教室里,一个学生举起手机对准黑板上的物理公式,轻轻一点——几秒钟后,屏幕上不仅显示出“牛顿第二定律 Fma”,还弹出一段通俗易懂的讲解:“这个公式说的是&a…

作者头像 李华
网站建设 2026/8/31 4:49:31

EagleEye开发者指南:Python调用DAMO-YOLO TinyNAS API避坑全流程

EagleEye开发者指南:Python调用DAMO-YOLO TinyNAS API避坑全流程 1. 为什么需要这份指南:从“能跑”到“跑稳”的真实差距 你可能已经成功拉起EagleEye服务,上传一张图,看到框框和数字跳出来——恭喜,第一步完成了。…

作者头像 李华
网站建设 2026/9/2 23:33:35

fft npainting lama在电商图片处理中的应用实践

FFT NPainting LaMa在电商图片处理中的应用实践 1. 为什么电商运营需要图像修复能力 你有没有遇到过这些场景: 一张刚拍好的商品图,背景里混进了同事的工牌或快递单号,直接发到详情页显然不合适主图上有个不起眼的水印,供应商说…

作者头像 李华
网站建设 2026/9/2 23:33:32

ES6类完全指南:声明方式、继承机制与实战技巧

ES6类完全指南:声明方式、继承机制与实战技巧在ES6之前,JavaScript通过“构造函数原型链”实现面向对象编程,语法繁琐且语义模糊,容易引发原型链污染、构造函数调用遗漏等问题。ES6引入的class语法,并非新增面向对象模…

作者头像 李华
网站建设 2026/8/30 23:58:38

Clawdbot从零开始:Qwen3:32B代理网关的onboard命令执行与服务健康检查

Clawdbot从零开始:Qwen3:32B代理网关的onboard命令执行与服务健康检查 1. 为什么需要一个AI代理网关:从混乱到统一的管理体验 你有没有遇到过这样的情况:本地跑着几个不同模型的服务,有的用Ollama,有的用vLLM&#x…

作者头像 李华