Phase 1 / Ep 03: Docker 容器化安装 —— 安全隔离的最佳实践
🎯 学习目标:使用 Docker Compose 运行 OpenClaw,理解容器化隔离对 Agent 安全的重要性。
1. 为什么推荐 Docker?
OpenClaw Agent 拥有强大的工具能力——它能执行 Shell 命令、读写文件、访问网络。这也意味着,如果配置不当,Agent 可能误操作你的系统。
Docker 提供进程级隔离:Agent 只能访问你显式挂载给它的目录,即使出错也不会影响宿主系统。
graph TD
subgraph Host["🖥️ macOS 宿主机"]
DockerEngine["Docker Engine"]
Volume["~/.openclaw-data\n数据卷"]
Env[".env 文件\nAPI Keys"]
end
subgraph Container["📦 OpenClaw 容器"]
Gateway["Gateway 进程"]
Agent["Agent 运行时"]
Node["Node.js v22"]
end
DockerEngine --> Container
Volume -.->|"挂载 /data"| Container
Env -.->|"注入"| Container
Gateway -->|"HTTPS"| LLM["Anthropic API"]
Gateway -->|"HTTPS"| TG["Telegram API"]2. 最小化 docker-compose.yml
创建一个专用目录并编写配置文件:
mkdir ~/openclaw-docker && cd ~/openclaw-docker
# docker-compose.yml
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw-agent
restart: unless-stopped
env_file: .env
volumes:
- ./data:/root/.openclaw # 数据持久化
- ./workspace:/workspace # Agent 工作空间
ports:
- "3377:3377" # Dashboard(可选)
healthcheck:
test: ["CMD", "openclaw", "status"]
interval: 60s
timeout: 10s
retries: 3
3. 环境变量管理
创建 .env 文件存放敏感配置:
# .env(绝对不要提交到 Git!)
ANTHROPIC_API_KEY=sk-ant-api03-xxxx
OPENCLAW_LLM_PROVIDER=anthropic
OPENCLAW_LLM_MODEL=claude-sonnet-4-20250514
⚠️ 安全提醒:将
.env加入.gitignore,API Key 永远不要硬编码到配置文件中。
4. 启动与验证
# 启动(后台运行)
docker compose up -d
# 查看日志
docker compose logs -f openclaw
# 进入容器交互
docker compose exec openclaw openclaw status
docker compose exec openclaw openclaw doctor
5. Volume 挂载策略
| 宿主机路径 | 容器内路径 | 用途 |
|---|---|---|
./data |
/root/.openclaw |
Agent 配置、记忆、会话(必须持久化) |
./workspace |
/workspace |
Agent 的文件操作沙箱 |
./plugins |
/root/.openclaw/plugins |
自定义 Plugin(可选) |
6. 容器 vs 原生安装的决策
| 维度 | macOS 原生 | Docker |
|---|---|---|
| 安装难度 | ⭐ | ⭐⭐ |
| 安全隔离 | ❌ 无 | ✅ 进程级 |
| 迁移能力 | 弱 | 强(整个 data 目录迁移即可) |
| 性能 | 最佳 | 轻微损耗 |
| 适用场景 | 开发调试 | 个人日用 / VPS 部署 |
下节预告: Ep 04,我们在 UTM 虚拟机里安装 Linux 版 OpenClaw,实现内核级隔离——这是安全等级最高的方案,适合运行
full权限的 Agent。