原文发表于 2026 年 2 月 23 日,由 Docker 工程师 Oleg Selajev 撰写
随着 AI 代理工具(例如 OpenClaw)越来越强大,让它们运行时不至于损害主机系统安全也变得越来越重要。
在这篇文章中,我们介绍如何使用 Docker Sandboxes 和 Docker Model Runner 在隔离环境中运行 OpenClaw,让你的 AI 编码代理保持高度的安全性、隐私和可控性,并避免泄露任何密钥或产生云端费用。
什么是 Docker Sandboxes?
Docker Sandboxes 是 Docker 生态中新推出的一种原语,它可以为 AI 代理或其它工作负载创建隔离的 微型虚拟机(microVM)。这种隔离环境提供:
- 与宿主机完全隔离的执行空间
- 可配置网络代理规则(比如禁止访问任意互联网主机)
- 将 API 密钥安全注入代理的网络层,而不是暴露给代理本身
- 可配置只允许访问特定资源(如项目工作区)
快速开始:在沙盒中运行 OpenClaw(本地模型)
要在隔离环境中运行 OpenClaw,你需要:
- 安装并启动 Docker Desktop
- 启用 Docker Model Runner(通过 Docker Desktop 设置界面)
- 从 Docker 模型仓库拉取一个本地模型,例如:
docker model pull ai/gpt-oss:20B-UD-Q4_K_XL- 创建并运行 OpenClaw 沙盒:
docker sandbox create --name openclaw -t olegselajev241/openclaw-dmr:latest shell . docker sandbox network proxy openclaw --allow-host localhost docker sandbox run openclaw- 在沙盒内部启动 OpenClaw:
~/start-openclaw.sh完成后,你就可以在一个隔离的终端界面中与 OpenClaw 交互 —— 所有对模型的调用都由主机上的 Docker Model Runner 提供,而 OpenClaw 则被严格限制只能访问指定工作区文件和经过许可的网络目标。
支持云模型(自动注入 API 密钥)
如果你已经在主机环境中设置了 OPENAI_API_KEY 或 ANTHROPIC_API_KEY 等密钥,Docker Sandboxes 的网络代理会自动注入这些凭证:
- 这意味着你可以在沙盒中无缝运行云模型
- 但代理本身仍然无法访问或泄露这些密钥
对于需要调用云端模型的场景,无需打开对主机 localhost 的访问,只需在 OpenClaw 设置中指定对应模型即可。
如何选择和使用模型
OpenClaw 的启动脚本会列出你已下载的所有模型:
~/start-openclaw.sh list你也可以指定某个模型来运行,例如:
~/start-openclaw.sh ai/qwen2.5:7B-Q4_K_M这样,你可以使用任何通过 docker model pull 拉取的模型。
背后是怎么工作的(技术细节)
沙盒镜像 olegselajev241/openclaw-dmr:latest 是基于 Docker Sandboxes 的 shell 模板构建的,并增强了以下能力:
- 安装了 Node.js 22 和 OpenClaw
- 增加了一个小型网络桥接程序,用于让沙盒内的 OpenClaw 能够访问主机上的 Docker Model Runner
- 利用沙盒自带的 HTTP 代理去控制网络访问规则
由于 Node.js 默认不遵循 HTTP_PROXY 环境变量,因此这个桥接程序负责把 OpenClaw 发出的请求转发到主机的 Model Runner 服务上。
自定义镜像:自己动手构建
如果你想定制镜像或学习内部构建原理,可以按如下步骤操作:
- 创建基础沙盒并安装 OpenClaw
- 编写一个 Model Runner 桥接脚本(大约 20 行 Node.js 代码)
- 修改 OpenClaw 配置文件,让它使用 Docker Model Runner
- 保存沙盒为可复用镜像,再推送到镜像仓库
之后其他人即可使用你构建的镜像以一致的方式启动 OpenClaw 沙盒。
总结
使用 Docker Sandboxes 结合 Docker Model Runner:
- 可以在 完全隔离的环境中运行 OpenClaw
- 避免直接暴露系统资源
- 安全地注入 API 密钥,不会泄露给 AI 代理
- 支持切换本地模型与云模型
- 便于重复部署、分享与协作使用
无论是开发阶段实验还是生产环境部署,这种方式都能使 OpenClaw 更加安全、可控且易于管理。