乐于分享
好东西不私藏

OpenClaw Docker 部署完整指南|沙箱隔离 + 容器化运行最佳实践

OpenClaw Docker 部署完整指南|沙箱隔离 + 容器化运行最佳实践

本系列第九篇:从环境到生产——用 Docker 给“龙虾”一个安全的“集装箱”,实现隔离、便携、永不掉线

欢迎回到 OpenClaw 系列教程。在之前的文章中,我们从理论认知一路走到本地安装,再到云端部署。但无论是本地直接安装还是云服务器部署,都有一个无法回避的问题:AI 拥有系统级执行权限——它能读写文件、运行命令、控制浏览器。如果 Agent 出现幻觉或被恶意诱导,后果可能是灾难性的。

这正是 Docker 部署的价值所在。

Docker 将 OpenClaw 及其所有依赖打包成一个独立的容器,与宿主机系统环境完全隔离。此外,容器化还带来了环境一致性、跨平台兼容、一键升级、快速回滚等一系列生产级特性。本文将系统讲解 OpenClaw 的 Docker 部署方案,覆盖从一键脚本到手工配置的全路径,并重点解析安全沙箱、数据持久化和国内网络优化等核心问题。

一、为什么选择 Docker 部署?

1.1 安全隔离:最根本的理由

这是 Docker 部署区别于其他方式的最核心价值。2026 年初,OpenClaw 的普及引发了安全领域的广泛讨论。安全研究人员已经指出:凭证泄露、权限提升和供应链漏洞是真实存在的威胁。

Docker 容器为 OpenClaw 提供了多层隔离屏障。在 macOS 和 Windows 上,Docker Desktop 通过 LinuxKit 虚拟机在宿主机和容器之间提供了一层隔离,容器本身还运行在受限的命名空间中。即使容器被攻破,攻击者的影响范围也被严格限制在容器内部,无法触及宿主机上的其他数据和应用。

1.2 环境一致性:“本地能跑,云端崩”的终结者

Docker 将 OpenClaw 及其所有运行依赖(Python 3.9、Node.js 22、各类依赖库等)打包成一个完整的镜像。无论在 Windows、macOS 还是 Linux 上运行,行为都是一致的。这彻底告别了“环境不一致导致部署失败”的困扰。

1.3 运维便捷:升级、回滚一条命令

容器化后,更新 OpenClaw 只需拉取新镜像并重启容器,回滚只需切换到旧镜像版本。配合 restart: always 或 unless-stopped 策略,容器异常退出后自动恢复,实现真正的 7×24 小时在线。

1.4 官方安全建议的核心要求

2026 年 3 月,多家机构发布安全通知,明确指出部署 OpenClaw 时必须采用 Docker 沙箱、虚拟机等隔离技术。Docker 部署不再是“可选项”,而是安全运行 AI Agent 的基本门槛

二、环境准备

2.1 前置条件

检查项
最低要求
推荐配置
Docker Engine
24.0+
最新稳定版
Docker Compose
v2.0+
Compose 插件
内存
2 GB
4 GB+
磁盘空间
20 GB
40 GB+
网络
可访问 Docker Hub/GitHub
配置国内镜像源(国内用户)

验证命令

bash

docker --versiondocker compose version

Docker Compose 必须使用新版插件形式(docker compose),而非旧版的独立二进制 docker-compose

内存特别提醒:在构建镜像时,pnpm install 阶段需要较多内存。官方文档明确指出,1 GB 内存的主机可能因 OOM 被系统 kill(exit 137)。个人测试至少 2GB,生产环境建议 4GB+。

2.2 Docker 安装快速参考

Linux(Ubuntu/Debian) :

bash

curl -fsSL https://get.docker.com | sudo shsudo usermod -aG docker {OPENCLAW_GATEWAY_TOKEN}    read_only: true    tmpfs:      - /tmp    cap_drop:      - ALL    cap_add:      - NET_BIND_SERVICE

安全加固说明:

  • 只读文件系统read_only: true 防止容器运行时写入文件系统

  • 丢弃所有能力cap_drop: ALL 移除所有 Linux Capabilities,最小化攻击面

  • 仅添加必需能力cap_add: NET_BIND_SERVICE 仅允许绑定网络端口

  • 临时文件用 tmpfstmpfs: /tmp 临时文件放在内存中,容器重启即失

  • Token 从环境变量读取:避免 Token 硬编码在配置文件中

4.3 沙箱模式配置(高风险操作隔离)

如果希望 OpenClaw 能够执行系统命令但需要进一步隔离,可以启用 Docker 沙箱模式。需要挂载 Docker Socket:

yaml

services:  openclaw:    image: ghcr.io/openclaw/openclaw:latest    # ... 其他配置    volumes:      - /var/run/docker.sock:/var/run/docker.sock:ro   # 启用沙箱模式

挂载 Docker Socket 后,OpenClaw 可以启动独立的沙箱容器来执行高危操作,实现执行层与宿主机之间的二次隔离。

⚠️ 沙箱安全警告:2026 年 2 月披露的 CVE-2026-27002 漏洞显示,配置注入问题可能导致危险的 Docker 选项(如 bind mounts、host networking)被应用,引发容器逃逸或宿主机数据访问。OpenClaw 现已增加运行时防护和配置校验,但启用沙箱模式前请务必更新到最新版本。

4.4 环境变量配置

创建 .env 文件:

bash

OPENCLAW_GATEWAY_TOKEN=your-secure-token-here

支持的常用环境变量(以 fourplayers/openclaw 社区镜像为例):

变量
说明
默认值
OPENCLAW_GATEWAY_TOKEN
Gateway 访问令牌
自动生成
OPENCLAW_GATEWAY_HOST
Gateway 公网 IP/FQDN
localhost
OPENCLAW_GATEWAY_PORT
Gateway 端口
18789
OPENCLAW_TLS_ENABLED
启用 HTTPS
false
ANTHROPIC_API_KEY
Anthropic Claude API Key
-
OPENAI_API_KEY
OpenAI API Key
-
GEMINI_API_KEY
Google Gemini API Key
-
OPENCLAW_AUTO_UPDATE
启动时自动更新
false
OPENCLAW_UPDATE_CHANNEL
更新渠道(stable/beta/dev)
stable

4.5 启动与验证

bash

# 启动服务docker compose up -d# 查看状态docker compose ps# 查看日志docker compose logs -f openclaw# 健康检查curl http://127.0.0.1:18789/healthz

五、首次启动与 Onboarding

5.1 在容器内执行配置向导

无论采用哪种部署方式,首次启动后都需要在容器内完成 Onboarding:

bash

# 进入容器docker compose exec openclaw-gateway bash# 执行配置向导openclaw onboard

交互式向导会引导完成:

  • 安全确认:了解 AI Agent 安全最佳实践

  • 模型配置:选择模型供应商并输入 API Key

  • 渠道配置:选择接入的通讯平台(Slack、Discord、Telegram、WhatsApp 等)

  • 渠道允许列表:配置哪些渠道或用户可以访问 Bot

  • 技能设置:启用联网搜索、图像生成等可选能力

配置完成后,Gateway 会自动重启。如果向导过程中中断(重启是正常现象),重新进入容器再次执行 openclaw onboard 即可,已有配置会复用。

5.2 手工配置模式(跳过向导)

如果不想使用交互式向导,也可以手工执行每个配置步骤:

bash

# 构建镜像docker build -t openclaw:local -f Dockerfile .# 运行 Onboard(不安装守护进程)docker compose run --rm --no-deps --entrypoint node openclaw-gateway \  dist/index.js onboard --mode local --no-install-daemon# 设置网关模式docker compose run --rm --no-deps --entrypoint node openclaw-gateway \  dist/index.js config set gateway.mode local# 设置绑定模式(允许局域网访问)docker compose run --rm --no-deps --entrypoint node openclaw-gateway \  dist/index.js config set gateway.bind lan# 配置允许的访问来源(如果需要从外部访问)docker compose run --rm --no-deps --entrypoint node openclaw-gateway \  dist/index.js config set gateway.controlUi.allowedOrigins \  '["http://localhost:18789","http://127.0.0.1:18789"]' --strict-json

5.3 关于 Bind Mode 的重要说明

OpenClaw 2026.3.13 版本对配置系统进行了重大升级,引入了新的 Bind Mode 机制,不再支持直接使用 IP 地址(如 0.0.0.0)进行绑定配置。推荐使用 lan 模式以支持局域网访问。

六、数据持久化与备份

6.1 持久化目录说明

OpenClaw 将配置和状态存储在容器内 /home/node/.openclaw 目录下。这个目录必须挂载为 Volume,否则容器重建后所有配置都会丢失。

text

./data/                    # 挂载点:/home/node/.openclaw├── openclaw.json          # 主配置文件(网关设置、API Keys、TLS 配置)├── openclaw.db            # SQLite 数据库(会话、记忆、向量存储)├── memory/                # 短期记忆日志├── sessions/              # 会话存档└── skills/                # 安装的社区技能

./workspace 目录用于存放项目工作文件,可根据需要挂载。

6.2 备份策略

方法一:备份 Volume 目录

bash

# 停止容器docker compose down# 打包数据目录tar -czf openclaw-backup-(pwd):/backup alpine \  tar czf /backup/openclaw-data-backup.tar.gz -C /source .

生产环境建议配置自动化定时备份,同时备份配置、技能和 Docker Volume。

6.3 迁移到新服务器

bash

# 在源服务器上tar -czf openclaw-full-backup.tar.gz ./data ./workspace .env# 在新服务器上解压并启动tar -xzf openclaw-full-backup.tar.gzdocker compose up -d

七、日志管理与监控

7.1 查看实时日志

bash

# 持续输出日志docker compose logs -f openclaw-gateway# 查看最近 100 行docker compose logs --tail 100 openclaw-gateway

7.2 健康检查

OpenClaw 内置了健康检查端点:

bash

curl http://127.0.0.1:18789/healthz

返回 OK 表示服务正常运行。可以配合监控系统(如 Prometheus)定期探测。

7.3 日志轮转配置

为防止日志文件无限增长,在 Docker Compose 中配置日志限制:

yaml

services:  openclaw-gateway:    logging:      driver: "json-file"      options:        max-size: "10m"        max-file: "3"

7.4 OpenClaw Doctor 诊断工具

在容器内运行诊断:

bash

docker compose exec openclaw-gateway openclaw doctor

八、更新与维护

8.1 更新容器版本

bash

# 拉取最新镜像docker compose pull# 重新创建容器docker compose up -d# 清理旧镜像docker image prune -f

8.2 回滚到指定版本

bash

# 修改 .env 中的版本标签OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:2026.3.31# 重启服务docker compose up -d

九、安全最佳实践清单

以下安全实践对于生产环境部署至关重要:

实践项
说明
优先级
端口绑定到 127.0.0.1
使用 "127.0.0.1:18789:18789" 限制本机访问
🔴 必须
使用强 Token
Token 长度 ≥ 32 字符,包含大小写字母、数字、特殊符号
🔴 必须
只读文件系统
read_only: true
 防止运行时写入
🟡 强烈建议
丢弃所有 Capabilities
cap_drop: ALL
 + cap_add: NET_BIND_SERVICE
🟡 强烈建议
定期更新版本
关注 GitHub 发布和安全公告,及时更新
🟡 强烈建议
配置日志轮转
限制日志大小,防止磁盘占满
🟢 建议
使用反向代理 + HTTPS
如需公网访问,配置 Nginx + Let's Encrypt
按需

🔴 必须:安全运行的最低门槛;🟡 强烈建议:生产环境推荐配置;🟢 建议:提升可维护性的优化项

十、常见问题与解决方案

Q1:构建时内存不足(exit code 137)

现象docker compose up 过程中进程被 kill,退出码 137。

原因:内存不足导致 OOM Killer 终止进程。pnpm install 在 1GB 内存主机上可能被 kill。

解决方案

  • 升级服务器配置(推荐 4GB+)

  • 使用预构建镜像替代本地构建:export OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest

Q2:外部无法访问 Web UI

现象:浏览器访问 http://<服务器IP>:18789 无响应。

原因:可能涉及多个层面——端口仅绑定到 127.0.0.1、防火墙未放行、Bind Mode 配置问题。

解决方案

  1. 检查 Docker 端口映射:

    bash

    docker compose port openclaw-gateway 18789

    输出应为 0.0.0.0:18789(允许外部)或 127.0.0.1:18789(仅本机)。

  2. 检查服务器防火墙(以 Ubuntu UFW 为例):

    bash

    sudo ufw allow 18789/tcp
  3. 如果使用云服务器,检查安全组/防火墙规则是否放行了 18789 端口。

  4. 配置 Bind Mode(参见 5.3 节)。

Q3:non-loopback Control UI requires allowedOrigins 错误

现象:Gateway 启动失败,日志提示需要配置 allowedOrigins

原因:OpenClaw 2026.2.25 版本后加强了安全策略,要求显式配置允许的访问来源。

解决方案:在容器的 openclaw.json 中添加:

json

{  "gateway": {    "controlUi": {      "allowedOrigins": [        "http://127.0.0.1:18789",        "http://localhost:18789"      ]    }  }}

配置后重启容器:

bash

docker compose down && docker compose up -d

Q4:国内 Docker Hub 镜像拉取超时

现象docker pull 命令超时或速度极慢。

解决方案

  • 配置国内镜像源(见 2.3 节)

  • 使用阿里云容器镜像服务拉取:

    bash

    docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/openclaw:latestdocker tag registry.cn-hangzhou.aliyuncs.com/qiluo-images/openclaw:latest openclaw:latest

Q5:容器频繁重启

现象docker compose ps 显示容器状态为 restarting

解决方案

bash

# 查看详细错误日志docker compose logs --tail 50 openclaw-gateway# 常见原因:配置错误、端口冲突、内存不足

Q6:如何从本地安装迁移到 Docker?

解决方案:将本地 ~/.openclaw 目录复制到 Docker 数据卷目录:

bash

cp -rf ~/.openclaw /data/openclaw_docker

然后修改 docker-compose.yml 中的 volume 挂载指向该目录。

十一、方案对比总结

维度
一键脚本方案
手工 Compose 方案
上手难度
★☆☆☆☆
★★☆☆☆
自动化程度
全自动
需手工配置
定制灵活性
较低
极高
适用场景
快速体验、个人测试
生产环境、深度定制
安全加固
基础配置
可精细化配置
推荐人群
新手、追求效率
有运维经验的开发者

选择建议:初次接触 Docker 部署的新手,直接使用官方 docker-setup.sh 即可。生产环境或有特殊安全需求的用户,建议采用手工 Compose 方案并进行安全加固配置。

十二、从 Docker 到生产环境

完成 Docker 部署后,OpenClaw 已经具备了隔离运行的基础。后续可以根据需要继续深入:

  • 第 10 篇:OpenClaw 模型配置实战——接入更多模型供应商

  • 第 14-18 篇:技能开发——从零创建自己的 Skills 和 Plugins

  • 第 19-22 篇:多平台集成——微信、飞书、Telegram 等渠道接入

  • 第 27 篇:安全配置指南——沙箱隔离、执行审批与权限最小化最佳实践

  • 第 28 篇:监控、日志与调试——OpenClaw 运维完全手册

💡 最终提醒:Docker 部署不是终点,而是安全运行 AI Agent 的起点。建议在生产环境部署前,务必完成第 27 篇中介绍的安全加固配置。如果你的 OpenClaw 需要对外提供公网访问,务必配置 HTTPS 和强身份认证机制,避免将 Gateway 直接暴露在公网。

下一篇预告:我们将进入 OpenClaw 的核心配置阶段——第 10 篇《OpenClaw 模型配置实战》,讲解如何接入阿里云百炼、OpenAI、Ollama 等多种模型供应商,让你的“龙虾”拥有真正的智慧大脑。

索引标签:#OpenClaw #Docker #容器化部署 #安全沙箱 #生产环境 #运维指南