AI 编码代理正在从补全代码走向执行任务。它们会读取项目、运行命令、安装依赖、构建容器,甚至持续工作到开发者离开屏幕。此时,安全问题不再只是提示词是否可靠,而是代理是否能直接接触宿主机。Dev.to 上关于 Docker Sandboxes 的文章,把这个问题摆到了台前:如果 AI Agent 可以运行危险命令,就应该把它放进沙箱。
Docker Sandboxes 是 Docker 用于在本机隔离运行 AI 编码代理的工具,由独立 CLI 工具 sbx 管理。其核心思路不是简单限制命令,而是给代理一个基于 microVM 的独立 Linux 环境,让代理在虚拟机内部获得足够权限,同时把宿主机挡在边界之外。
完全自主模式为何需要隔离
文章提到一个并不轻松的事实:在 Docker Sandboxes 中启动 Claude Code 时,标准启动命令包含 claude --dangerously-skip-permissions。这并不是因为开发者鲁莽,而是沙箱本来就要为这种高自主模式提供安全运行条件。类似机制在其他代理中也存在:Codex 可以绕过审批,Cursor、Copilot 和 Gemini 也有厂商称为 YOLO 的运行方式。官方教程直接说明,内置沙箱集成会以完全自主模式启动代理,用户无需手动添加这些参数。
完全自主模式的价值很明确:代理可以连续规划、执行、修复,减少人工确认造成的中断。但它同样扩大了影响范围。Docker 在 2026 年 1 月的 microVM 发布博客中用一句话概括了这种取舍:“既然它们无法损害你的电脑,就让它们自由运行。”这句话的前提是“无法损害”,而前提本身需要技术边界来保证。
容器不够用时,microVM 成为信任边界
过去,面对危险脚本,开发者的常见回答是“放进容器”。这对构建脚本有效,但对编码代理并不足够。编码代理会对话、判断下一步命令,并在长时间运行中不断改变环境。容器时代的两个假设因此失效。
第一,容器共享宿主机内核。命名空间和 cgroups 提供了很多隔离能力,但它们不是硬件级边界。microVM 是轻量虚拟机,拥有自己的内核,并由 hypervisor 启动。Docker 将 microVM 描述为其安全模型中的“主要信任边界”。代理在虚拟机内部可以拥有完整控制权,包括 sudo,但虚拟机边界阻止它接触宿主系统。
第二,会构建容器的代理通常需要 Docker socket。文章提醒,一旦工具拥有宿主机 Docker 访问权限,就相当于拥有宿主机 root,因为 docker run -v /:/host 这类命令始终存在。Docker Sandboxes 的做法是在每个沙箱内部运行私有 Docker daemon。代理可以在虚拟机里构建镜像、拉取依赖、运行容器,但对宿主机 Docker daemon 没有访问权限。Docker 称这一设计在沙箱方案中具有独特性,文章作者也表示未发现反例。
可丢弃的 Linux 环境,以及不能忽视的项目目录风险
每个沙箱都是一个真实 Linux 环境。代理可以在其中安装软件包、修改文件、启动服务。当一次运行出现问题时,用户可以删除整个沙箱,并在数秒内重新创建。文章认为,正是这种可丢弃的循环,改变了开发者愿意授予代理的自主程度。
不过,沙箱并非没有例外。Docker 文档明确指出,直接挂载的项目目录是读写模式。换句话说,项目目录位于沙箱边界的例外位置,代理可以修改或删除其中文件。Andrew Lock 在实践 Claude Code 时也得出类似结论:沙箱只访问工作目录,因此它可能删除 git 仓库,但可造成的损害基本限于此。对于开发者来说,这意味着至少要把工作纳入版本控制,或使用 clone mode,或者两者同时使用。
Docker 的安全模型页面相对具体地说明了哪些内容会进入虚拟机、哪些内容会返回宿主机、哪些内容永远不会跨越边界。文章认为,这是整个文档中最有价值的一页,因为它把“已沙箱化”这个模糊说法拆成了可验证的边界。
sbx 的使用方式与行业信号
sbx 是创建和管理这些沙箱的独立 CLI。素材称,它不要求宿主机安装 Docker Desktop 或 Docker Engine,本地沙箱计算免费,包括用于商业工作。安装方式覆盖主流系统:macOS 使用 Homebrew,Windows 使用 winget,Ubuntu 从 Docker 的 apt 仓库安装 docker-sbx。用户通过 sbx login 完成 Docker OAuth 登录,然后在项目目录中执行类似 sbx run --name my-sandbox claude 的命令启动代理。
首次运行会拉取代理模板 docker/sandbox-templates:claude-code。随后,系统会要求为所有沙箱选择默认网络策略:Open 表示全部允许,Balanced 表示默认拒绝但允许常见开发目标,Locked Down 表示未经明确允许全部禁止。入门指南推荐从 Balanced 开始。
凭据处理也体现了边界意识。若用户使用 Claude 订阅,可以在会话内输入 /login,OAuth token 保留在宿主机,不会存储在沙箱内;若使用 API key,sbx secret set anthropic 会把密钥保存在宿主侧,由代理使用,但不直接暴露给代理。通过 sbx ls 可以查看沙箱、代理、状态、端口、工作区和创建时间;其中 workspace 列被认为是代理能看到的宿主机文件范围。用户也可以通过 sbx exec -it my-sandbox bash 进入虚拟机内部查看。
从行业角度看,这件事的意义在于,AI 编程代理的安全问题正在从“提醒模型谨慎”转向“默认不信任执行环境”。当代理开始运行命令、管理容器、安装依赖,仅靠容器隔离已经不够。Docker Sandboxes 提供的是一种工程化路径:用 microVM 建立硬件级边界,用私有 Docker daemon 隔离容器操作,用可丢弃环境降低事故成本。对开发者而言,真正重要的不是代理能走多远,而是它的行动是否被限制在一台可以随时删除的机器里。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/gei-ai-bian-ma-dai-li-yi-tai-ke-diu-qi-de-ji-qi-docker