使用 Docker 沙箱进行编码代理
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的标志 - 允许代理动态安装工具
- 让代理构建并运行容器
- 在不担心风险的情况下大胆实验
代理需要自由,而你的机器则不需要。