在 Docker Shell 沙箱中运行 NanoClaw

发布: (2026年2月16日 GMT+8 22:00)
5 分钟阅读

Source: Docker Blog

想要运行一个全天候监控你 WhatsApp 消息的个人 AI 助手,但又担心它访问整个系统吗?Docker Sandboxes 全新的 shell 沙箱类型正是完美的解决方案。在本文中,我将演示如何在安全、隔离的 Docker 沙箱中运行 NanoClaw,这是一款轻量级、基于 Claude 的 WhatsApp 助手。

什么是 Shell Sandbox?

Docker Sandboxes 提供预配置的环境,用于运行 AI 编码代理,如 Claude Code、Gemini CLI 等。当您需要运行一个不同的代理或工具,而它并未内置时,shell sandbox 会将您放入一个隔离的 microVM 中的交互式 Bash shell。它提供一个干净的 Ubuntu 环境,内置 Node.js、Python、Git 和常用开发工具——没有预装的代理,也没有任何预设。您可以自行安装所需的一切。

为什么在沙箱中运行 NanoClaw?

NanoClaw 已经在容器中运行其代理,因此从设计上就注重安全。将 整个 NanoClaw 进程放入 Docker 沙箱会再增加一层保护:

  • 文件系统隔离 – NanoClaw 只能看到你挂载的工作区目录,无法访问你的主目录。
  • 凭证管理 – API 密钥通过 Docker 代理注入,永不存储在沙箱内部。
  • 干净的环境 – 不会与主机的 Node.js 版本或全局包产生冲突。
  • 可丢弃性 – 随时使用 docker sandbox rm 将其销毁并重新启动。

前置条件

  • 已安装并运行 Docker Desktop
  • Docker Sandboxes CLI(docker sandbox 命令可用)– v0.12.0(截至 2 月 13 日的 nightly 版本)。
  • 环境变量中已有 Anthropic API 密钥。

设置

创建沙盒

mkdir -p ~/nanoclaw-workspace
docker sandbox create --name nanoclaw shell ~/nanoclaw-workspace

连接到沙盒

docker sandbox run nanoclaw

现在你已经进入了沙盒——一个运行在隔离 VM 中的 Ubuntu shell。此后的一切都在沙盒内部进行。

安装 Claude Code

Shell 沙盒已经预装了 Node.js 20,因此通过 npm 安装 Claude Code:

npm install -g @anthropic-ai/claude-code

配置 API 密钥

内置的 claude 沙盒类型会自动配置密钥,但在普通 shell 中需要告诉 Claude Code 从 Docker 的凭证代理获取 API 密钥:

mkdir -p ~/.claude && cat > ~/.claude/settings.json <<'EOF'
{
  "apiKeyHelper": "echo proxy-managed",
  "defaultMode": "bypassPermissions",
  "bypassPermissionsModeAccepted": true
}
EOF

apiKeyHelper 让 Claude Code 运行 echo proxy-managed 来获取密钥。沙盒的网络代理会拦截外发的 API 调用,并将这个占位值替换为你的真实 Anthropic 密钥,因此实际密钥永远不会出现在沙盒内部。

克隆 NanoClaw 并安装依赖

cd ~/workspace
git clone https://github.com/shelajev/nanoclaw.git
cd nanoclaw
npm install

运行 Claude 并设置 NanoClaw

NanoClaw 在初始设置时使用 Claude Code——配置 WhatsApp 认证、数据库和容器运行时:

claude

Claude 启动后,运行 /setup 并按照提示操作。Claude 会引导你扫描 WhatsApp 二维码并完成其余配置。

启动 NanoClaw

npm start

NanoClaw 现在已在沙盒中运行,并监听来自 WhatsApp 的消息。

管理沙盒

# List all sandboxes
docker sandbox ls

# Stop the sandbox (stops NanoClaw too)
docker sandbox stop nanoclaw

# Start it again
docker sandbox start nanoclaw

# Remove it entirely
docker sandbox rm nanoclaw

还能运行什么?

Shell 沙盒并非 NanoClaw 专属。任何可以在 Linux 上运行并与 AI API 通信的程序都适用:

  • 使用 Claude Agent SDK 或其他任何 AI 代理(Claude Code、Codex、GitHub Copilot、OpenCode、Kiro 等)构建的自定义代理。
  • AI 驱动的机器人和自动化脚本。
  • 你不想在主机上直接运行的实验性工具。

模式始终相同:创建沙盒,安装所需内容,通过代理配置凭证,然后运行它。

docker sandbox create --name my-shell shell ~/my-workspace
docker sandbox run my-shell
0 浏览
Back to Blog

相关文章

阅读更多 »