Docker 是可选的。只有在你想使用容器化 Gateway 网关,或想验证 Docker 流程时才使用它。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Docker 适合我吗?
- 是:你想要一个隔离的、可丢弃的 Gateway 网关环境,或想在没有本地安装的主机上运行 OpenClaw。
- 否:你在自己的机器上运行,并且只想要最快的开发循环。请改用普通安装流程。
- 沙箱注意事项:启用沙箱隔离时,默认沙箱后端会使用 Docker,但沙箱隔离默认关闭,并且不要求整个 Gateway 网关在 Docker 中运行。SSH 和 OpenShell 沙箱后端也可用。请参阅沙箱隔离。
前提条件
- Docker Desktop(或 Docker Engine)+ Docker Compose v2
- 镜像构建至少需要 2 GB RAM(
pnpm install在 1 GB 主机上可能因 OOM 被终止,并以退出码 137 退出) - 足够用于镜像和日志的磁盘空间
- 如果在 VPS/公网主机上运行,请查看
网络暴露安全加固,
尤其是 Docker
DOCKER-USER防火墙策略。
容器化 Gateway 网关
构建镜像
从仓库根目录运行设置脚本:这会在本地构建 Gateway 网关镜像。若要改用预构建镜像:预构建镜像发布在
GitHub Container Registry。
常用标签:
main、latest、<version>(例如 2026.2.26)。完成新手引导
设置脚本会自动运行新手引导。它将:
- 提示输入提供商 API 密钥
- 生成 Gateway 网关令牌并写入
.env - 通过 Docker Compose 启动 Gateway 网关
openclaw-gateway 运行。openclaw-cli 用于 Gateway 网关容器已存在之后
你运行的命令。打开控制 UI
在浏览器中打开
http://127.0.0.1:18789/,并将已配置的
共享密钥粘贴到设置中。设置脚本默认会将令牌写入 .env;如果你将容器配置切换为密码认证,请改用该
密码。还需要再次获取 URL?手动流程
如果你更想自己运行每个步骤,而不是使用设置脚本:请从仓库根目录运行
docker compose。如果你启用了 OPENCLAW_EXTRA_MOUNTS
或 OPENCLAW_HOME_VOLUME,设置脚本会写入 docker-compose.extra.yml;
请用 -f docker-compose.yml -f docker-compose.extra.yml 将其包含进去。因为
openclaw-cli 共享 openclaw-gateway 的网络命名空间,所以它是一个
启动后工具。在运行 docker compose up -d openclaw-gateway 之前,请通过
带有 --no-deps --entrypoint node 的 openclaw-gateway 运行新手引导和
设置时的配置写入。环境变量
设置脚本接受这些可选环境变量:| 变量 | 用途 |
|---|---|
OPENCLAW_IMAGE | 使用远程镜像,而不是在本地构建 |
OPENCLAW_DOCKER_APT_PACKAGES | 在构建期间安装额外 apt 包(以空格分隔) |
OPENCLAW_EXTENSIONS | 在构建时包含选定的内置插件助手 |
OPENCLAW_EXTRA_MOUNTS | 额外的主机绑定挂载(逗号分隔的 source:target[:opts]) |
OPENCLAW_HOME_VOLUME | 将 /home/node 持久化到命名 Docker 卷中 |
OPENCLAW_SANDBOX | 选择启用沙箱引导(1、true、yes、on) |
OPENCLAW_SKIP_ONBOARDING | 跳过交互式新手引导步骤(1、true、yes、on) |
OPENCLAW_DOCKER_SOCKET | 覆盖 Docker 套接字路径 |
OPENCLAW_DISABLE_BONJOUR | 禁用 Bonjour/mDNS 广播(Docker 默认值为 1) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | 禁用内置插件源码绑定挂载覆盖 |
OTEL_EXPORTER_OTLP_ENDPOINT | 用于 OpenTelemetry 导出的共享 OTLP/HTTP 收集器端点 |
OTEL_EXPORTER_OTLP_*_ENDPOINT | 用于链路追踪、指标或日志的特定信号 OTLP 端点 |
OTEL_EXPORTER_OTLP_PROTOCOL | OTLP 协议覆盖。目前仅支持 http/protobuf |
OTEL_SERVICE_NAME | 用于 OpenTelemetry 资源的服务名称 |
OTEL_SEMCONV_STABILITY_OPT_IN | 选择启用最新的实验性 GenAI 语义属性 |
OPENCLAW_OTEL_PRELOADED | 当已有一个 OpenTelemetry SDK 预加载时,跳过启动第二个 SDK |
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro。
对于相同插件 id,该挂载的源码目录会覆盖匹配的已编译
/app/dist/extensions/synology-chat 包。
可观测性
OpenTelemetry 导出是从 Gateway 网关容器向你的 OTLP 收集器出站发送的。它不需要发布 Docker 端口。如果你在本地构建镜像,并希望镜像内包含内置 OpenTelemetry 导出器, 请包含其运行时依赖:@openclaw/diagnostics-otel 插件,
然后再启用导出。自定义源码构建镜像仍可通过
OPENCLAW_EXTENSIONS=diagnostics-otel 包含本地插件源码。若要启用导出,请在配置中允许并启用
diagnostics-otel 插件,然后设置
diagnostics.otel.enabled=true,或使用 OpenTelemetry
导出中的配置示例。收集器认证标头通过
diagnostics.otel.headers 配置,而不是通过 Docker 环境变量配置。
Prometheus 指标使用已发布的 Gateway 网关端口。安装
clawhub:@openclaw/diagnostics-prometheus,启用
diagnostics-prometheus 插件,然后抓取:
/metrics 端口或未经认证的反向代理路径。请参阅
Prometheus 指标。
健康检查
容器探针端点(无需认证):HEALTHCHECK,会 ping /healthz。
如果检查持续失败,Docker 会将容器标记为 unhealthy,编排系统可以重启或替换它。
已认证的深度健康快照:
LAN 与 loopback
scripts/docker/setup.sh 默认设置 OPENCLAW_GATEWAY_BIND=lan,因此主机可通过 Docker 端口发布访问
http://127.0.0.1:18789。
lan(默认):主机浏览器和主机 CLI 可以访问已发布的 Gateway 网关端口。loopback:只有容器网络命名空间内的进程可以直接访问 Gateway 网关。
请在
gateway.bind 中使用绑定模式值(lan / loopback / custom /
tailnet / auto),不要使用 0.0.0.0 或 127.0.0.1 这样的主机别名。主机本地提供商
当 OpenClaw 在 Docker 中运行时,容器内的127.0.0.1 指的是容器
本身,而不是你的主机。对于在主机上运行的 AI 提供商,请使用 host.docker.internal:
| 提供商 | 主机默认 URL | Docker 设置 URL |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 | http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 | http://host.docker.internal:11434 |
docker-compose.yml 会将 host.docker.internal 映射到
Linux Docker Engine 的 Docker 主机网关。Docker Desktop 在 macOS 和 Windows 上已提供
相同主机名。
主机服务还必须监听 Docker 可访问的地址:
docker run 命令,请自行添加相同的主机
映射,例如
--add-host=host.docker.internal:host-gateway。
Bonjour / mDNS
Docker bridge 网络通常无法可靠转发 Bonjour/mDNS 多播 (224.0.0.251:5353)。因此,内置 Compose 设置默认设置
OPENCLAW_DISABLE_BONJOUR=1,这样在 bridge 丢弃多播流量时,Gateway 网关不会崩溃循环或反复
重启广播。
对于 Docker 主机,请使用已发布的 Gateway 网关 URL、Tailscale 或广域 DNS-SD。
仅在使用 host networking、macvlan,或其他已知 mDNS 多播可工作的网络时,
才设置 OPENCLAW_DISABLE_BONJOUR=0。
有关注意事项和故障排除,请参阅 Bonjour 设备发现。
存储与持久化
Docker Compose 会将OPENCLAW_CONFIG_DIR 绑定挂载到 /home/node/.openclaw,并将
OPENCLAW_WORKSPACE_DIR 绑定挂载到 /home/node/.openclaw/workspace,因此这些路径
会在容器替换后保留。当任一变量未设置时,内置
docker-compose.yml 会回退到 ${HOME}/.openclaw(工作区挂载则回退到
${HOME}/.openclaw/workspace),如果 HOME 本身也缺失,则回退到 /tmp/.openclaw。
这可避免 docker compose up 在裸环境中发出空来源卷规范。
该挂载的配置目录是 OpenClaw 存放以下内容的位置:
- 用于行为配置的
openclaw.json - 用于已存储提供商 OAuth/API 密钥认证的
agents/<agentId>/agent/auth-profiles.json - 用于环境变量支持的运行时密钥(如
OPENCLAW_GATEWAY_TOKEN)的.env
media/、会话 JSONL 文件、cron/runs/*.jsonl、已安装插件包根目录,以及 /tmp/openclaw/ 下的滚动文件日志。
Shell 辅助工具(可选)
为了更轻松地进行日常 Docker 管理,请安装ClawDock:
scripts/shell-helpers/clawdock-helpers.sh 原始路径安装了 ClawDock,请重新运行上面的安装命令,让你的本地辅助文件跟踪新位置。
然后使用 clawdock-start、clawdock-stop、clawdock-dashboard 等命令。运行 clawdock-help 查看所有命令。
完整辅助工具指南见 ClawDock。
为 Docker Gateway 网关启用智能体沙箱
为 Docker Gateway 网关启用智能体沙箱
docker.sock。如果沙箱设置无法完成,脚本会将 agents.defaults.sandbox.mode 重置为 off。自动化 / CI(非交互式)
自动化 / CI(非交互式)
使用
-T 禁用 Compose 伪 TTY 分配:共享网络安全注意事项
共享网络安全注意事项
openclaw-cli 使用 network_mode: "service:openclaw-gateway",因此 CLI 命令可以通过 127.0.0.1 访问 Gateway 网关。请将其视为共享信任边界。compose 配置会移除 NET_RAW/NET_ADMIN,并在 openclaw-cli 上启用 no-new-privileges。权限和 EACCES
权限和 EACCES
该镜像以
node(uid 1000)身份运行。如果你在 /home/node/.openclaw 上看到权限错误,请确保主机 bind mount 归 uid 1000 所有:更快重建
更快重建
调整 Dockerfile 顺序,让依赖层可以被缓存。这样除非 lockfile 发生变化,否则可以避免重新运行
pnpm install:高级用户容器选项
高级用户容器选项
默认镜像以安全优先,并以非 root 的
node 用户运行。对于功能更完整的容器:- 持久化
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - 内置系统依赖:
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - 安装 Playwright 浏览器:
- 持久化浏览器下载内容:设置
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright,并使用OPENCLAW_HOME_VOLUME或OPENCLAW_EXTRA_MOUNTS。
OpenAI Codex OAuth(无头 Docker)
OpenAI Codex OAuth(无头 Docker)
如果你在向导中选择 OpenAI Codex OAuth,它会打开一个浏览器 URL。在 Docker 或无头设置中,复制你最终到达的完整重定向 URL,并将其粘贴回向导以完成认证。
基础镜像元数据
基础镜像元数据
主 Docker 运行时镜像使用
node:24-bookworm-slim,并发布 OCI 基础镜像注释,包括 org.opencontainers.image.base.name、org.opencontainers.image.source 等。Node 基础摘要会通过 Dependabot Docker 基础镜像 PR 刷新;发布构建不会运行发行版升级层。见 OCI 镜像注释。在 VPS 上运行?
有关共享 VM 部署步骤,包括二进制文件内置、持久化和更新,请参阅 Hetzner(Docker VPS) 和 Docker VM 运行时。Agent 沙箱
当agents.defaults.sandbox 通过 Docker 后端启用时,Gateway 网关会在隔离的 Docker 容器内运行智能体工具执行(shell、文件读写等),而 Gateway 网关本身仍留在主机上。这会在不容器化整个 Gateway 网关的情况下,为不受信任或多租户智能体会话提供一道硬隔离边界。
沙箱范围可以是按智能体(默认)、按会话或共享。每个范围都会获得自己的工作区,并挂载到 /workspace。你还可以配置允许/拒绝工具策略、网络隔离、资源限制和浏览器容器。
有关完整配置、镜像、安全注意事项和多智能体配置文件,请参阅:
快速启用
docker build 命令。
故障排除
镜像缺失或沙箱容器无法启动
镜像缺失或沙箱容器无法启动
使用
scripts/sandbox-setup.sh(源码 checkout),或 沙箱隔离 § 镜像和设置 中的内联 docker build 命令(npm 安装)来构建沙箱镜像,或将 agents.defaults.sandbox.docker.image 设置为你的自定义镜像。
容器会按需为每个会话自动创建。沙箱中的权限错误
沙箱中的权限错误
将
docker.user 设置为与你挂载工作区所有权匹配的 UID:GID,或对工作区文件夹执行 chown。沙箱中找不到自定义工具
沙箱中找不到自定义工具
OpenClaw 使用
sh -lc(login shell)运行命令,它会 source /etc/profile,并且可能重置 PATH。设置 docker.env.PATH 来前置你的自定义工具路径,或在 Dockerfile 中的 /etc/profile.d/ 下添加脚本。镜像构建期间因 OOM 被终止(退出 137)
镜像构建期间因 OOM 被终止(退出 137)
VM 至少需要 2 GB RAM。请使用更大的机器规格并重试。
Gateway 网关目标显示 ws://172.x.x.x,或 Docker CLI 出现配对错误
Gateway 网关目标显示 ws://172.x.x.x,或 Docker CLI 出现配对错误
重置 Gateway 网关模式和绑定: