跳到正文
🟠 需外部服务 — 需自备相关账号/权限 进阶

AI 安全代码沙箱:Docker 容器隔离运行敏感任务

用 OpenClaw 的 Docker/Podman 容器功能隔离运行 AI 编程任务——在完全隔离的环境中执行代码、测试脚本、安装依赖,不污染主机系统,适合处理敏感代码或未知来源的任务。

⚔️ 难度 ★★☆ 进阶
⏱ 配置耗时 20 分钟配置
🎁 掉落 节省 20 分钟配置
🦞 部署 可一键部署

🎯 做完你会得到

代码在隔离环境运行,系统安全有保障;测试未知脚本不担心破坏环境;轻松清理,不留痕迹。

👤 适合谁

  • 需要处理未知/第三方代码的开发者
  • 对系统安全有要求的企业用户
  • 想测试各种 AI 编程工具又不想污染本机的人

⚡ 效果预览

AI 收到第三方Python脚本,在Docker容器中隔离运行:脚本执行完毕,未接触主机文件系统,容器已销毁,环境干净。

这个场景解决什么问题

AI 编程的两大担忧:

  • 代码安全性未知:AI 生成的或第三方的代码,不知道有没有恶意,会不会删文件/偷数据
  • 环境污染:在主机上安装各种依赖,版本冲突,清理麻烦

安全方案:用 Docker 容器运行所有 AI 编程任务,系统级隔离,运行完即销毁。

前置条件

  • Docker 或 Podman 已安装
  • OpenClaw 版本 >= 2026.2.22

配置步骤

1. 检查环境

# 检查 Docker 是否可用
docker --version

# 检查 Podman 是否可用(Docker 的替代,不需要 root)
podman --version

# 如果都没有,安装 Docker
# Mac: brew install --cask docker
# Linux: curl -fsSL https://get.docker.com | sh

2. 基础容器运行

# 方式A:直接用 OpenClaw 的 --container 选项
openclaw run "帮我写一个Python脚本处理这个CSV文件" --container

# 方式B:在容器内执行特定文件
openclaw exec --container ./test-script.py

# 方式C:指定容器镜像
openclaw run --container --image python:3.11-slim "分析这个Excel数据"

3. 创建专属代码沙箱

# 创建代码分析专用的 Docker 镜像
cat > Dockerfile.sandbox << 'EOF'
FROM python:3.11-slim

# 只安装必要的工具
RUN pip install pandas openpyxl matplotlib

# 不允许网络访问(更安全)
RUN apt-get update && apt-get install -y curl && \
    # 限制只能访问特定API
    echo "allowlist = [\"api.github.com\"]" >> /etc/hosts

# 容器内不允许root运行
USER 1000

WORKDIR /workspace
EOF

# 构建镜像
docker build -f Dockerfile.sandbox -t openclaw-sandbox .

4. 配置 OpenClaw 使用沙箱

# AGENTS.md 中添加

## 代码执行安全配置
- 所有代码执行默认使用容器隔离
- 容器镜像:`openclaw-sandbox`(自定义安全镜像)
- 网络限制:只允许访问白名单域名
- 文件系统:只允许读写 /workspace 目录
- 执行完毕:自动销毁容器,不保留状态

## 安全规则
- 不在主机上直接运行来源不明的脚本
- 所有 `exec` 操作默认用 `--container`
- 涉及文件系统的操作在容器内完成后再复制出来

5. 典型使用流程

用户:帮我分析一下这个Python脚本有没有安全问题

AI 分析:

正在 Docker 容器中安全执行...

✅ 分析完成

## 安全分析报告

脚本:`data-processor.py`

### 行为分析
| 操作 | 风险 | 说明 |
|------|------|------|
| 读取CSV文件 | ✅ 无风险 | 正常文件操作 |
| 数据处理 | ✅ 无风险 | 标准 pandas 操作 |
| 写入输出文件 | ⚠️ 注意 | 确认输出路径 |
| 网络请求 | ❌ 未发现 | 无外部通信 |
| 系统命令 | ❌ 未发现 | 无 shell 调用 |

### 结论
✅ 脚本基本安全,未发现恶意行为

### 容器运行记录
- 运行镜像:openclaw-sandbox
- 执行时间:3.2秒
- 文件系统访问:只读 /workspace
- 容器状态:已自动销毁(无残留)

不同场景的容器配置

场景1:Web 开发测试

# Node.js + npm 环境
openclaw run --container --image node:20-alpine \
  "帮我创建一个Express API,处理用户注册"

# 带数据库测试
openclaw run --container \
  --volume ./test-db:/var/lib/postgresql/data \
  "测试这个用户注册API"

场景2:Python 数据分析

# 数据科学专用镜像
openclaw run --container --image jupyter/scipy-notebook \
  "分析这个销售数据,生成图表"

# 带文件卷挂载
openclaw run --container \
  --volume $(pwd)/data:/data \
  --image python:3.11-slim \
  "处理 data/ 目录下的所有CSV"

场景3:未知第三方脚本

# 最高安全级别:完全隔离,无网络
openclaw run --container \
  --image alpine:latest \
  --no-network \
  "运行这个脚本,报告结果"

# 限制资源(CPU/内存)
openclaw run --container \
  --memory 512m \
  --cpus 0.5 \
  "分析这个脚本"

清理与管理

# 查看当前运行的容器
docker ps -a

# 手动清理所有已停止的容器
docker container prune -f

# 清理所有镜像(谨慎)
docker image prune -a

# 查看 OpenClaw 容器日志
docker logs openclaw-sandbox-runner

预期结果

  • 安全:未知代码在容器中运行,破坏不了主机
  • 干净:容器销毁后零残留,不污染本机环境
  • 可控:可以限制网络、CPU、内存使用

常见问题

Docker 需要 root 权限?

可以用 Podman 替代,不需要 root:

podman run --rm openclaw-sandbox python test.py

容器中没有需要的依赖?

在 Dockerfile 中预先安装,或者让 AI 自动安装:

openclaw run --container --image python:3.11-slim \
  --install-deps "pip install pandas openpyxl"

文件怎么传入传出容器?

# 传入文件
docker cp ./input.csv container-id:/workspace/input.csv

# 传出结果
docker cp container-id:/workspace/output.csv ./output.csv

不满意怎么调

  • 只要基础隔离 → 用默认镜像,不自定义
  • 需要完整环境 → 预构建包含所有依赖的自定义镜像
  • 完全禁止网络 → 加 --no-network 参数