使用 Docker 沙箱进行编码代理

发布: (2026年2月4日 GMT+8 07:57)
4 分钟阅读
原文: Dev.to

Source: Dev.to

场景

你想让编码代理:

  • 修改真实代码库
  • 安装系统依赖
  • 构建并运行容器
  • 在带有宽松标志的无人值守模式下运行

……但 不想冒险危及你的笔记本或凭证。Docker Sandbox 通过在一个可一次性销毁的 microVM 中运行代理,并仅挂载你的项目工作区来实现这一点。

步骤 1:创建 Sandbox

使用本地项目目录作为工作区创建一个新的 sandbox:

docker sandbox create --name agent-sandbox --workspace ./my-project

它的作用:

  • 创建一个专用的 microVM
  • 仅将 ./my-project 挂载到 sandbox 中
  • 将你的操作系统、主目录和机密信息隔离开来

步骤 2:进入 Sandbox

在 sandbox 中启动交互式 shell:

docker sandbox exec agent-sandbox bash

此时你已经 在 sandbox 内部,而不是在宿主机器上。从现在起:

  • 任何软件包安装
  • 任何配置更改
  • 任何 Docker 命令

……都将完全隔离。

步骤 3:运行编码代理(无人值守)

在 sandbox 内部,以宽松模式运行你的编码代理:

claude-code run --dangerously-skip-permissions --project /workspace

为何安全:

  • 代理运行在 microVM 中
  • 仅项目目录是可写的
  • 没有访问宿主操作系统、SSH 密钥或凭证的权限

这就是 Docker Sandbox 的 预期工作流

步骤 4:让代理安装依赖

代理可以自由修改环境:

apt-get update
apt-get install -y nodejs npm

无需权限提示、无需批准循环,也不会对你的机器构成风险。

步骤 5:让代理使用 Docker

在 sandbox 中,代理可以构建并运行容器:

docker build -t my-app .
docker run -p 8080:8080 my-app

重要提示:

  • 使用你的宿主 Docker 守护进程
  • 容器完全在 sandbox microVM 内运行

正是这种能力使 Docker Sandbox 与普通容器根本不同。

步骤 6:在宿主机上查看结果

退出 sandbox 并检查更改:

git diff

你只会看到代理 有意的代码更改——没有多余的系统软件包、没有被修改的操作系统文件,也没有残留的后台进程。

步骤 7:删除 Sandbox

完成后,删除 sandbox:

docker sandbox delete agent-sandbox

microVM 会立即被销毁,环境被清除。除代码更改外没有任何持久化内容,下次启动时即可全新开始。

为什么这种模式有效

Docker Sandbox 为代理提供:

  • 真正的操作系统
  • 包管理器和系统工具
  • Docker 访问权限
  • 完全的自主权

同时为你提供:

  • 通过 microVM 实现的强隔离
  • 可一次性销毁的环境
  • 零宿主污染
  • 在使用宽松代理模式时的信心

何时使用 Docker Sandbox

这种模式特别适用于:

  • 无人值守运行编码代理
  • 使用类似 --dangerously-skip-permissions 的标志
  • 允许代理动态安装工具
  • 让代理构建并运行容器
  • 在不担心风险的情况下大胆实验

代理需要自由,而你的机器则不需要。

Back to Blog

相关文章

阅读更多 »

当 AI 给你一巴掌

当 AI 给你当头一棒:在 Adama 中调试 Claude 生成的代码。你是否曾让 AI “vibe‑code” 一个复杂功能,却花了数小时调试细微的 bug……