记最后一次在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后发现了一些问题才记录下部署和一些配置过程,问题主要有:
- 网关容器反复重启(包括因此导致的大模型服务验证失败)(这是我手动部署的原因)
- Docker拉取失败
- 配置失败(这和脚本无关)
- 飞书机器人无回复
部署
第一步:构建镜像
使用:
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.7和node: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
-
使用
docker-setup.sh总是说 大模型验证失败
该脚本会同时启动openclaw-gateway和openclaw-cli两个容器。Gateway 容器在配置错误时会立即退出并反复重启(restart: unless-stopped),而 onboard 似乎需要在 CLI 容器中运行并连接 Gateway 进行验证。两个容器的依赖形成了死锁 —— Gateway 重启导致 onboard 验证一直失败,配置无法完成。 -
为什么作者你修改配置但无法保存?
权限问题,我服务器上有两个账户(我也是后来才想起来),docker的权限组是1000,而我挂载卷到10001的用户目录下,导致容器内的账户也是1000无权限修改配置。然后我设置为777,给足权限,再改回容器账号权限(忘记是怎样的了)

1217

被折叠的 条评论
为什么被折叠?



