为什么选择 Docker?
在 Docker 中运行 OpenClaw 相比裸机安装有三大优势:
- 1.安全隔离:代理运行在一个对宿主系统访问受限的容器内。如果恶意技能或提示词注入试图访问你的文件,容器边界会限制其影响范围。
- 2.可复现性:同一个 Docker 镜像在任何机器上都能以相同方式运行——无论是你的笔记本电脑、VPS 还是树莓派。
- 3.清理方便:想从头开始?删除容器,启动一个新的就行。没有残留文件,没有损坏的 Node.js 安装。
前置条件
- •Docker Desktop(macOS/Windows)或 Docker Engine(Linux)
- •Docker Compose v2(Docker Desktop 已包含)
- •至少 2 GB 内存可供容器使用
- •一个 AI API 密钥(Anthropic、OpenAI 或其他支持的服务商)
快速开始
方案 A:官方 Docker Compose(推荐)
克隆 OpenClaw 仓库并使用内置的 Docker 配置:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
运行设置脚本,它会创建必要的目录和配置:
bash docker-setup.sh
- •
~/.openclaw/——配置文件、SOUL.md、API 密钥 - •
~/openclaw/workspace/——代理可以访问的文件
在容器内运行引导向导:
docker compose run --rm openclaw-cli onboard
按照提示设置 API 密钥并连接聊天平台。然后启动网关:
docker compose up -d openclaw-gateway
你的代理现在已经在后台运行了。
方案 B:预构建镜像
如果你不想克隆仓库,可以使用官方预构建镜像:
docker run -d \
--name openclaw \
--restart unless-stopped \
-v ~/.openclaw:/root/.openclaw \
-v ~/openclaw/workspace:/root/workspace \
-p 3000:3000 \
ghcr.io/openclaw/openclaw:latest
Docker Compose 参考配置
以下是一份带注释的生产环境 docker-compose.yml:
version: "3.8"
services:
openclaw-gateway:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "3000:3000" # Web UI
volumes:
- ~/.openclaw:/root/.openclaw # Config and data
- ~/openclaw/workspace:/root/workspace # Agent workspace
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- TZ=Asia/Shanghai # Set your timezone
mem_limit: 2g # Prevent runaway memory usage
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
在同一目录下创建一个 .env 文件,写入你的 API 密钥:
ANTHROPIC_API_KEY=sk-ant-xxxxx
OPENAI_API_KEY=sk-xxxxx
环境变量
| 变量 | 是否必需 | 说明 |
|---|---|---|
ANTHROPIC_API_KEY | 是* | Claude API 密钥 |
OPENAI_API_KEY | 否 | GPT API 密钥(如使用 OpenAI) |
OPENCLAW_PORT | 否 | Web UI 端口(默认:3000) |
OPENCLAW_HOME | 否 | 容器内的数据目录 |
TZ | 否 | 定时任务的时区 |
*至少需要一个 AI 服务商的密钥。
容器管理
# 查看日志
docker logs -f openclaw
# 停止代理
docker compose stop
# 启动代理
docker compose up -d
# 修改配置后重启
docker compose restart
# 更新到最新版本
docker compose pull
docker compose up -d
# 进入容器 Shell
docker exec -it openclaw bash
# 在容器内运行 CLI 命令
docker exec openclaw openclaw skill list
docker exec openclaw openclaw status
安全加固
限制文件系统访问
只挂载代理实际需要的目录。避免挂载整个 home 目录:
volumes:
- ~/.openclaw:/root/.openclaw:rw # Config (read-write)
- ~/documents:/root/docs:ro # Documents (read-only)
网络隔离
如果你的代理不需要访问本地网络服务,可以限制其网络:
networks:
openclaw-net:
driver: bridge
internal: false # Set to true to block all external access
只读根文件系统
为了最大程度的安全,将根文件系统设为只读,只允许对特定路径进行写入:
read_only: true
tmpfs:
- /tmp
- /run
更新
OpenClaw 更新频繁。要更新你的 Docker 部署:
docker compose pull # Pull latest image
docker compose up -d # Recreate container with new image
docker image prune -f # Clean up old images
你的配置和数据保存在挂载的卷中,因此更新不会造成数据丢失。
故障排除
容器启动后立即崩溃:使用 docker logs openclaw 查看日志。常见原因:缺少 API 密钥、内存不足或端口冲突。
WhatsApp 二维码不显示:以交互模式运行引导程序:docker compose run --rm openclaw-cli onboard。二维码需要支持渲染的终端。
挂载卷出现权限错误:确保宿主机上的目录存在且归当前用户所有:mkdir -p ~/.openclaw ~/openclaw/workspace。
内存占用过高:在 docker-compose.yml 中设置 mem_limit: 2g 以防止容器占用过多内存。
如需了解更多详情,请参阅官方 Docker 文档和仓库中的 docker-compose.yml。