Docker 部署 OpenClaw
Docker 是 可选的。仅当您需要容器化的网关或验证 Docker 流程时使用。Docker 适合我吗?
- 适合:您想要一个隔离的、可丢弃的网关环境,或者需要在没有本地安装的主机上运行 OpenClaw
- 不适合:您在自己的机器上运行,并且只想要最快的开发循环,应该使用正常的安装流程
- 沙箱说明:agent 沙箱也使用 Docker,但不要求整个网关都运行在 Docker 中
系统需求
在开始之前,请确保您的系统满足以下要求:- Docker Desktop(或 Docker Engine) + Docker Compose v2
- 镜像构建至少需要 2 GB 内存(1 GB 主机会因为内存不足被
pnpm install进程以 exit 137 退出) - 足够的磁盘空间用于镜像和日志
- 如果运行在 VPS/公共主机上,请查看网络暴露的安全加固
快速开始(推荐)
此处的 Docker 默认绑定模式假设为绑定模式(
lan/loopback),而非主机别名。
请在 gateway.bind 中使用绑定模式值(例如 lan 或 loopback),不要使用主机别名如 0.0.0.0 或 localhost。可选环境变量
OPENCLAW_IMAGE— 使用远程镜像代替本地构建(例如ghcr.io/openclaw/openclaw:latest)OPENCLAW_DOCKER_APT_PACKAGES— 构建期间安装额外的 apt 软件包OPENCLAW_EXTRA_MOUNTS— 添加额外的主机绑定挂载OPENCLAW_HOME_VOLUME— 使用命名卷持久化/home/nodeOPENCLAW_SANDBOX— 选择启用 Docker 网关沙箱引导,仅当值明确为1、true、yes、on时启用OPENCLAW_INSTALL_DOCKER_CLI— 本地镜像构建时的构建参数传递(1表示在镜像中安装 Docker CLI)OPENCLAW_DOCKER_SOCKET— 覆盖 Docker 套接字路径(默认使用DOCKER_HOST=unix://...或/var/run/docker.sock)
- 在浏览器打开
http://127.0.0.1:18789/ - 将令牌粘贴到控制界面(设置 → 令牌)
- 需要再次获取 URL?运行
docker compose run --rm openclaw-cli dashboard --no-open
基础镜像
主 Docker 镜像当前使用:- 基础镜像:
node:22-bookworm - 摘要:
sha256:cd7bcd2e7a1e6f72052feb023c7f6b722205d3fcab7bbcbd2d1bfdab10b1e935
org.opencontainers.image.source: https://github.com/openclaw/openclaworg.opencontainers.image.url: https://openclaw.aiorg.opencontainers.image.documentation: https://docs.openclaw.ai/install/dockerorg.opencontainers.image.licenses: MITorg.opencontainers.image.title: OpenClaworg.opencontainers.image.description: OpenClaw 网关与 CLI 运行时容器镜像
使用远程镜像
官方预构建镜像发布于: 使用镜像名ghcr.io/openclaw/openclaw。
常用标签:
main—main分支的最新构建<version>— 发布版本标签构建(例如2026.2.26)latest— 最新稳定发布标签
拉取远程镜像
默认情况下,设置脚本从源码构建镜像。若想拉取预构建镜像,请在运行脚本前设置OPENCLAW_IMAGE:
OPENCLAW_IMAGE 非默认值 openclaw:local,改为执行 docker pull 而非 docker build。其余(入门、网关启动、令牌生成)流程相同。
Docker Compose 配置
服务说明
docker-compose.yml 定义了两个服务:手动流程
如果您想手动运行:从仓库根目录运行
docker compose ...。如果启用了 OPENCLAW_EXTRA_MOUNTS 或 OPENCLAW_HOME_VOLUME,setup 脚本会写入 docker-compose.extra.yml,在其他命令中需一并包含:附加挂载(可选)
若想在容器中挂载额外主机目录,可在运行docker-setup.sh 前设置 OPENCLAW_EXTRA_MOUNTS,支持逗号分隔的 Docker 绑定挂载列表,自动应用到 openclaw-gateway 和 openclaw-cli,生成 docker-compose.extra.yml。
示例:
持久化容器 home 目录(可选)
如果希望/home/node 在容器重建时保持持久,设置命名卷 OPENCLAW_HOME_VOLUME。这会创建 Docker 卷,并挂载到 /home/node,同时保留标准配置/工作区绑定挂载。
示例:
- 命名卷名称必须匹配
^[A-Za-z0-9][A-Za-z0-9_.-]*$ - 更改
OPENCLAW_HOME_VOLUME后需重新运行 setup 脚本 - 命名卷会一直存在,直到使用
docker volume rm <name>删除
健康检查
容器探针端点(无需认证):/health 和 /ready。
Docker 镜像内置 HEALTHCHECK,后台定期 ping /healthz,Docker 通过检测 OpenClaw 响应性维护容器状态。若多次失败,Docker 标记容器为 unhealthy,容器编排系统(Docker Compose 重启策略、Swarm、Kubernetes 等)可自动重启或替换。
故障排查
权限问题
镜像以node 用户(uid 1000)运行。若看到 /home/node/.openclaw 权限错误,请确保主机绑定挂载的目录归属 uid 1000。
示例(Linux 主机):
局域网 vs loopback
docker-setup.sh 默认将 OPENCLAW_GATEWAY_BIND=lan,使主机能够通过 Docker 端口映射访问 http://127.0.0.1:18789。
lan(默认):主机浏览器和 CLI 可以访问发布的网关端口loopback:仅容器内网络命名空间内的进程可访问网关,主机端口映射可能失效
Gateway target: ws://172.x.x.x:18789 或多次出现 pairing required 错误,运行:
下一步
配置
配置您的 OpenClaw 实例
环境变量
了解环境变量配置