记最后一次在Docker中部署OpenClaw的过程

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

记最后一次在Docker中部署OpenClaw的过程


作者:kai
日期:2026年3月21日

前景提要:

基于openClaw仓库的v2026.3.13-1部署,这只是部署方法的一种。本文适合指南,不适合当作操作手册。

涉及从外部仓库拉取数据。在Windows11上构建,基于Docker Desktop + WSL2(Docker),还用到Powershell(Windows上的终端之一)和MobaXterm(用于远程连接服务器),以及其他一般会使用到工具、环境,本文不涉及宿主机上的环境配置。
作者水平和时间有限,且是根据回忆撰写,文字难免存在疏漏,望谅解,另注:技术更新换代,文档将来会过时。
本文仅涉及成功的最后一次,不包含多次失败。


官方手法

从仓库构建

根据官方 Docker Install文档的介绍,在Dockers宿主机上克隆仓库,执行其中的docker-setup.sh将会一部执行镜像构建、运行和配置引导。
文档内容已更新,3月21日查阅时是运行./scripts/docker/setup.sh

在最后几个版本,作者从node:22-bookworm改用node:24-bookworm

从远程拉取

这是比较推荐的办法,官方镜像往往问题较少(吧)。

docker pull ghcr.io/openclaw/openclaw:main-slim

作者因使用docker-setup.sh后发现了一些问题才记录下部署和一些配置过程,问题主要有

  1. 网关容器反复重启(包括因此导致的大模型服务验证失败)(这是我手动部署的原因)
  2. Docker拉取失败
  3. 配置失败(这和脚本无关)
  4. 飞书机器人无回复

部署

第一步:构建镜像

使用:

git clone https://github.com/openclaw/openclaw.git

获取镜像,随后:

cd openclaw

进入仓库,准备需要用到的环境变量(参考.evn.example)用于编写Docker构建指令(Dockerfile会采纳)
个人建议保持默认设置,随后使用Docker构建镜像

2FdockerDesktopLinuxEngine/_ping": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
docker build `
   -t openclaw:local202603 `
   --build-arg OPENCLAW_INSTALL_BROWSER=1 `
   --build-arg OPENCLAW_SANDBOX=0 `
   --build-arg OPENCLAW_GATEWAY_BIND=loopback `
   --build-arg OPENCLAW_DOCKER_APT_PACKAGES="curl wget git python3 build-essential libssl-dev ca-certificates xvfb chromium fonts-liberation ffmpeg imagemagick" `
   .

这期间会遇到镜像拉取失败的情况,例如docker/dockerfile:1.7node:24-bookworm,我们单独执行

docker pull docker/dockerfile:1.7
docker pull node:24-bookworm

提前准备好镜像,一般来说是会自动使用本地的,但也会存在例外,可以修改Dockerfile,就在前几行,变量:

# syntax=docker/dockerfile:1.7

# ...

# ARG OPENCLAW_NODE_BOOKWORM_IMAGE="node:24-bookworm@sha256:3a09aa6354567619221ef6c45a5051b671f953f0a1924d1f819ffb236e520e6b"

ARG OPENCLAW_NODE_BOOKWORM_IMAGE="node:22-bookworm"

然后再执行docker build ...(前面那条指令)就可以了。

我强烈推荐你使用外部网络,否则你需要使用npm镜像仓库、github镜像仓库…还有可能无法获得完整的包。

最后,会在本地保存openclaw:local202603的镜像

在服务器上的Docker中运行

添加镜像

使用docker save -o openclaw-local202603.tar openclaw:local202603,这会在当前目录以openclaw-local202603.tar保存镜像,使用MobaXterm可以很方便的复制它到服务器上。

在服务器上

docker load -i ~/openclaw_resp/openclaw-local202603.tar

这样我们就实现在本地构建,在服务器上添加镜像。

启动容器

我们需要编写一个容器配置

vim docker-compose.yml

像这样:

services:
  openclaw-gateway:
    image: openclaw:local202603
    container_name: openclaw-gateway
    user: "1000:1000"
    restart: unless-stopped
    init: true
    volumes:
      - ~/openclaw_ass:/home/node/.openclaw
    environment:
      - HOME=/home/node
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_TOKEN=<使用openssl rand -hex 32生成>
      - OPENCLAW_GATEWAY_BIND=loopback

然后,使用指令docker compose up -d启动容器

  • 使用docker ps可以查看正在运行的容器进程有哪些
  • 使用docker logs -f <container id>你可以查看相应“容器ID”的控制台输出

配置OpenClaw

配置大模型服务提供商

参考官方 First Steps 我们运行 openclaw onboard开始配置

添加QQ Bot

打开https://q.qq.com/qqbot/openclaw/login.htmlQQ专门准备的快速开始指南,扫码登录QQ即可创建机器人。

随后按照指引,在Docker容器中执行两行指令(网关会自动重启)

openclaw plugins install @tencent-connect/openclaw-qqbot@latest
openclaw channels add --channel qqbot --token "<app id>:<appsecret>"

第一条是安装qq bot通信渠道插件,第二条是配置机器人,基于WebSocket长连接。

网关重启之后,你就可以在QQ上向机器人对话了。

添加飞书机器人

官方指导文档在这

不使用原本自带的Feishu通道,我们使用

npx -y @larksuite/openclaw-lark install

他会引导创建机器人(应用),如果你已经有配置(比如自带的Feishu渠道设置的机器人),他会问你用已有的机器人还是新建一个。

正常来说他会显示二维码,引导你创建机器人。如果只是要求提供 App ID 和 App Secret,你可以在应用中看到。

创建完成后,网关会自动重启一次。这时候飞书机器人依旧不在线,我们回到宿主机上执行docker restart <container id>重启这个容器,一切就绪后你就可以使用飞书进行交流了。

其他问题请查阅文中给出的文档

Q&A

  1. 使用docker-setup.sh总是说 大模型验证失败
    该脚本会同时启动 openclaw-gatewayopenclaw-cli 两个容器。Gateway 容器在配置错误时会立即退出并反复重启(restart: unless-stopped),而 onboard 似乎需要在 CLI 容器中运行并连接 Gateway 进行验证。两个容器的依赖形成了死锁 —— Gateway 重启导致 onboard 验证一直失败,配置无法完成。

  2. 为什么作者你修改配置但无法保存?
    权限问题,我服务器上有两个账户(我也是后来才想起来),docker的权限组是1000,而我挂载卷到10001的用户目录下,导致容器内的账户也是1000无权限修改配置。然后我设置为777,给足权限,再改回容器账号权限(忘记是怎样的了)

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值