一文教你OpenClaw Docker 部署并调用本地Qwen3.5 9B模型

作者:

文章目录
  • 本文记录我在 Ubuntu 24.04.2 LTS 上,用 Docker 部署 Ollama(下载并运行 qwen3.5:9b-q8_0 模型),再把它接入 OpenClaw 的完整过程。 如果你也想在本地跑千问(Qwen)并用 OpenClaw 的 Web UI 进行对话/测试,可以按本文一步步做完。
  • 搞不清自己用的是 Docker 版还是系统服务版 Ollama 两者同时存在时,经常抢 11434 端口,导致 “连不上/连错服务”。 Docker 版 Ollama 却在宿主机直接跑 ollama pull/list 除非你在宿主机也装了 Ollama CLI,否则请用 docker exec -it ollama ollama …。 OpenClaw 的 root 与 node 用户混用 典型表现:权限报错(EACCES)、找不到 token、Web UI 校验失败。 Model 配置里 Endpoint ID 没填 ollama 可能导致 Web UI 报 “No API key found for provider …”。
  • Ollama:一个在本地运行大模型的工具,提供命令行与 HTTP 接口。 Qwen / 千问:阿里巴巴开源的 Qwen(千问)系列大模型。 9B:模型参数规模(约 90 亿参数),一般比 7B 更强,但也更吃显存/内存。 8bit / Q8_0:量化方式的一种,把模型权重用更低精度保存,降低显存占用(但可能略影响效果)。 CUDA:NVIDIA 的 GPU 计算平台与生态(驱动、运行库、工具链等)。 NVIDIA Container Toolkit:让 Docker 容器能够使用 NVIDIA GPU 的组件(没装好会导致 –gpus all 失败)。 Gateway token:OpenClaw Web UI 用来连接网关的令牌,作用类似“访问口令”。 Endpoint ID:在 OpenClaw 里给某个模型接口起的“内部标识名”,后续配置会引用它。 Web UI:网页界面(浏览器里操作的界面)。 到此这篇关于一文教你OpenClaw Docker 部署并调用本地Qwen3.5 9B模型的文章就介绍到这了,更多相关OpenClaw Docker 部署本地Qwen3.5内容请搜索风君子博客以前的文章或继续浏览下面的相关文章,希望大家以后多多支持风君子博客!
  • 目录
    • 一文教你 OpenClaw Docker 部署 并调用本地Qwen3.5 9B模型
      • 0. 环境要求(建议先对照)
    • 1. 环境检测
      • 1.1 NVIDIA 显卡驱动是否正常
      • 1.2 Docker 是否已安装
    • 2. Ollama:本地部署 Qwen3.5 9B(Q8_0 量化)
      • 2.1 Docker 版 vs 系统服务版(systemctl)有什么区别?
      • 2.2 如果你装过系统服务版:先停掉,避免抢端口
      • 2.3 启动 Docker 版 Ollama(带 GPU + 数据持久化)
      • 2.4 验证 Ollama 是否启动成功
      • 2.5 下载模型:qwen3.5:9b-q8_0
      • 2.6 如果拉取模型时报错:升级 Ollama(Docker 镜像)
    • 3. OpenClaw:安装与对接 Ollama
      • 3.1 准备 OpenClaw 的工作目录与数据卷
      • 3.2 重点:root 与非 root(node)用户不要混用
      • 3.3 运行配置向导(openclaw configure)
        • 3.3.1 配置 Workspace(工作目录)
        • 3.3.2 配置 Model(对接 Ollama)
        • 3.3.3 配置 Gateway(用于 Web UI 连接)
      • 3.4 启动 OpenClaw 并访问 Web UI
        • 3.4.1 如果一直提示验证不通过
    • 4. 简单验证:对话 + 观察 GPU
      • 4.1 聊天询问模型信息
        • 4.2 查看 GPU 使用情况
        • 5. 重点坑位(建议做成自检清单)
          • 6. 名词解释(统一放在文章末尾)

            本文记录我在 Ubuntu 24.04.2 LTS 上,用 Docker 部署 Ollama(下载并运行 qwen3.5:9b-q8_0 模型),再把它接入 OpenClaw 的完整过程。

            如果你也想在本地跑千问(Qwen)并用 OpenClaw 的 Web UI 进行对话/测试,可以按本文一步步做完。

            • 操作系统:Ubuntu 24.04.2 LTS
            • 显卡:NVIDIA,16GB 显存更稳(本文以此为参考)
            • 驱动:版本 ≥ 535(通常意味着 CUDA 12+ 生态更匹配)
            • 内存:至少 16GB
            • 磁盘:预留 ≥ 20GB(模型与缓存会占空间)

            nvidia-smi
            watch -n 1 nvidia-smi

            如果 nvidia-smi 没有输出(或提示找不到命令),一般是驱动没装好;如果输出里显示的驱动版本较低,建议先升级驱动再继续。

            docker -v

            如果没有版本信息,先安装 Docker:

            # 快速安装 Docker(如未安装)
            curl -fsSL https://get.docker.com | sh
            # 启动 Docker 并设置开机自启
            sudo systemctl start docker
            sudo systemctl enable docker
            # 验证 Docker
            docker --version

            Ollama 常见有两种安装/启动方式:Docker 版系统服务版(systemctl)。核心差异如下:

            维度 Docker 版 Ollama 系统服务版 Ollama(systemctl)
            运行环境 运行在容器里,依赖 Docker 直接运行在系统里,无容器隔离
            GPU 使用 需要 --gpus all 显式启用 GPU 直接使用主机 GPU(前提是驱动正常)
            数据位置 容器内 /root/.ollama(通常用 Docker 卷持久化) 主机 ~/.ollama(普通用户)或 /root/.ollama(root)
            端口 通常映射主机 11434 默认直接占用主机 11434
            冲突风险 端口映射相同会冲突 直接占用端口,容易与 Docker 版冲突

            我这里 推荐 Docker 版:更好迁移、更好维护(尤其是你后面还要跑 OpenClaw 时)。

            sudo systemctl stop ollama
            sudo systemctl disable ollama

            如果你没有安装过系统服务版,这两条命令可能会提示 “Unit ollama.service not found”,可以忽略。

            下面用 Docker 卷来保存模型与缓存,好处是:删容器不丢模型

            docker run -d 
              --name ollama 
              --restart=always 
              --gpus all 
              -p 11434:11434 
              -v ollama:/root/.ollama 
              ollama/ollama:latest

            注意点:

            • –gpus all 用来启用 GPU。
            • -v ollama:/root/.ollama 用来持久化模型数据。

            如果你在这里看到类似报错:could not select device driver "" with capabilities: [[gpu]],说明 Docker 还没配置好 NVIDIA GPU 运行时(通常需要安装 NVIDIA Container Toolkit)。这类问题建议先按 NVIDIA 官方文档把 nvidia-container-toolkit 配好,再继续。

            # 1) 容器是否在运行(看到 Up 即正常)
            docker ps --filter "name=ollama"
            # 2) 端口是否可访问(返回 "Ollama is running" 即成功)
            curl http://127.0.0.1:11434

            这里有一个容易踩坑的点:如果你用的是 Docker 版 Ollama,那么 ollama pull/list 这些命令应该在容器里执行(除非你额外在宿主机也安装了 Ollama 命令行)。

            docker exec -it ollama ollama pull qwen3.5:9b-q8_0

            如果拉取完成,列出模型确认一下:

            docker exec -it ollama ollama list

            然后跑一个简单对话,确认模型能正常工作:

            docker exec -it ollama ollama run qwen3.5:9b-q8_0

            看到能正常输出,同时 nvidia-smi 里 GPU 有占用,就说明 Ollama + GPU 没问题。

            推荐按这个顺序升级(数据卷会保留,不会丢模型):

            # 1) 拉取最新版镜像
            docker pull ollama/ollama:latest
            # 2) 停止并删除旧容器(仅删除容器实例,卷数据会保留)
            docker stop ollama
            docker rm ollama
            # 3) 用新镜像重新启动容器
            docker run -d 
              --name ollama 
              --restart=always 
              --gpus all 
              -p 11434:11434 
              -v ollama:/root/.ollama 
              ollama/ollama:latest

            下面以 ~/openclaw-docker 为例(你也可以换成其它目录):

            mkdir -p ~/openclaw-docker
            cd ~/openclaw-docker
            # 创建数据卷:持久化 OpenClaw 的配置与数据
            docker volume create openclaw-data

            如果你确定要清空 OpenClaw 的所有配置(会丢失 gateway token、模型配置等),再执行:

            docker volume rm openclaw-data

            默认情况下,Docker 部署 OpenClaw 时,root 与非 root(node)用户使用的配置目录不一样:

            • root 用户(UID 0)
              • 主配置 / 工作目录:/root/.openclaw
              • 沙箱工作区:/root/.openclaw/sandboxes
            • 非 root 用户(node,UID 1000,镜像默认)
              • 主配置 / 工作目录:/home/node/.openclaw
              • 沙箱工作区:/home/node/.openclaw/sandboxes

            关键区别(用一句话记住就行):你 configure 用谁,后面运行容器也要用同一个用户,否则很容易出现权限/找不到配置的问题。

            本文后续统一使用 --user root,所以挂载路径都以 /root/.openclaw 为准。

            docker run -it --rm 
              --user root 
              --net=host 
              -v openclaw-data:/root/.openclaw 
              ghcr.io/openclaw/openclaw:latest 
              openclaw configure

            建议这样填(按你的实际情况替换):

            • API Base URL:
              • 如果你像本文一样在 openclaw configure 时加了 --net=host:可以填 http://127.0.0.1:11434/v1
              • 如果你没有使用 --net=host:不要填 127.0.0.1,改填宿主机 IP,比如 http://192.168.1.18:11434/v1
            • API Key:随意填写或直接回车(本地 Ollama 通常不做鉴权),例如 sk-123456
            • 模型名称:填 ollama list 里显示的模型名,例如 qwen3.5:9b-q8_0(不要拼错)

            注意:Endpoint ID 建议填写 ollama。如果你填了别的名字,可能会在 Web UI 发送消息时出现类似报错:

            Agent failed before reply: No API key foun d for provider "custom-...".
            ...

            Gateway bind modeGateway authTailscale exposureGateway token source 先按向导的推荐/默认选项来即可(如果你只是本机使用,一般不需要太复杂的暴露方式)。

            这里最重要的一件事:记下 Gateway token(它相当于你的 Web UI 连接口令)。

            完成后选择 continue 结束配置:

            在你刚才的工作目录里执行(这样 $(pwd) 就是你的 workspace):

            docker run -d 
              --name openclaw 
              --net=host 
              --user root 
              -v openclaw-data:/root/.openclaw 
              -v "$(pwd)":/root/.openclaw/workspace 
              -v /var/run/docker.sock:/var/run/docker.sock 
              --restart unless-stopped 
              ghcr.io/openclaw/openclaw:latest

            说明:

            • -v "$(pwd)":/root/.openclaw/workspace:把宿主机当前目录挂到容器里当 workspace,方便你在主机上直接管理文件。
            • -v /var/run/docker.sock:/var/run/docker.sock:允许 OpenClaw 调用宿主机 Docker(有安全风险,仅建议在你信任的本机环境使用)。

            浏览器打开:http://127.0.0.1:18789

            如果出现需要令牌的页面,把你在配置阶段记录的 Gateway token 填进去即可:

            常见原因之一:你 configure 时用的用户,和 docker run 运行时用的用户不一致(比如一个是 root,一个是 node),导致读取到的配置目录不同。

            你也可以先用下面命令打印出 OpenClaw 的 dashboard 地址(不会自动打开浏览器):

            docker exec -it openclaw openclaw dashboard --no-open

            你可以开着 watch -n 1 nvidia-smi,然后在 Web UI 发几条消息,观察显存/利用率是否上涨。

            1. 搞不清自己用的是 Docker 版还是系统服务版 Ollama
              • 两者同时存在时,经常抢 11434 端口,导致 “连不上/连错服务”。
            2. Docker 版 Ollama 却在宿主机直接跑 ollama pull/list
              • 除非你在宿主机也装了 Ollama CLI,否则请用 docker exec -it ollama ollama …。
            3. OpenClaw 的 root 与 node 用户混用
              • 典型表现:权限报错(EACCES)、找不到 token、Web UI 校验失败。
            4. Model 配置里 Endpoint ID 没填 ollama
              • 可能导致 Web UI 报 “No API key found for provider …”。

            • Ollama:一个在本地运行大模型的工具,提供命令行与 HTTP 接口。
            • Qwen / 千问:阿里巴巴开源的 Qwen(千问)系列大模型。
            • 9B:模型参数规模(约 90 亿参数),一般比 7B 更强,但也更吃显存/内存。
            • 8bit / Q8_0:量化方式的一种,把模型权重用更低精度保存,降低显存占用(但可能略影响效果)。
            • CUDA:NVIDIA 的 GPU 计算平台与生态(驱动、运行库、工具链等)。
            • NVIDIA Container Toolkit:让 Docker 容器能够使用 NVIDIA GPU 的组件(没装好会导致 --gpus all 失败)。
            • Gateway token:OpenClaw Web UI 用来连接网关的令牌,作用类似“访问口令”。
            • Endpoint ID:在 OpenClaw 里给某个模型接口起的“内部标识名”,后续配置会引用它。
            • Web UI:网页界面(浏览器里操作的界面)。

            到此这篇关于一文教你OpenClaw Docker 部署并调用本地Qwen3.5 9B模型的文章就介绍到这了,更多相关OpenClaw Docker 部署本地Qwen3.5内容请搜索风君子博客以前的文章或继续浏览下面的相关文章,希望大家以后多多支持风君子博客!

            站内搜索