Docker 셸 샌드박스에서 NanoClaw 실행
Source: Docker Blog
WhatsApp 메시지를 24시간 내내 모니터링하는 개인 AI 어시스턴트를 실행하고 싶었지만, 전체 시스템에 접근 권한을 주는 것이 걱정되셨나요? Docker Sandboxes의 새로운 shell 샌드박스 유형이 완벽한 해결책입니다. 이 글에서는 가벼운 Claude‑기반 WhatsApp 어시스턴트인 NanoClaw를 안전하고 격리된 Docker 샌드박스 안에서 실행하는 방법을 보여드리겠습니다.
셸 샌드박스란?
Docker Sandboxes는 Claude Code, Gemini CLI 등과 같은 AI 코딩 에이전트를 실행하기 위한 사전 구성된 환경을 제공합니다. 내장되지 않은 다른 에이전트나 도구를 실행해야 할 때, 셸 샌드박스는 격리된 microVM 내부의 대화형 Bash 셸로 안내합니다. 여기에는 Node.js, Python, Git 및 일반적인 개발 도구가 포함된 깨끗한 Ubuntu 환경이 제공되며—사전 설치된 에이전트가 없고, 의견도 없습니다. 필요에 따라 원하는 것을 설치하면 됩니다.
Why Run NanoClaw in a Sandbox?
NanoClaw는 이미 에이전트를 컨테이너에서 실행하므로 설계상 보안에 신경을 씁니다. 전체 NanoClaw 프로세스를 Docker 샌드박스 안에서 실행하면 또 다른 계층을 추가합니다:
- Filesystem isolation – NanoClaw는 마운트한 워크스페이스 디렉터리만 볼 수 있고, 홈 디렉터리는 볼 수 없습니다.
- Credential management – API 키는 Docker 프록시를 통해 주입되며, 샌드박스 내부에 저장되지 않습니다.
- Clean environment – 호스트의 Node.js 버전이나 전역 패키지와 충돌이 없습니다.
- Disposability –
docker sandbox rm명령으로 언제든지 삭제하고 새로 시작할 수 있습니다.
사전 요구 사항
- Docker Desktop이 설치되고 실행 중입니다.
- Docker Sandboxes CLI(
docker sandbox명령 사용 가능) – v0.12.0 (2023년 2월 13일 기준 야간 빌드). - 환경 변수에 Anthropic API 키가 설정되어 있습니다.
Source: …
설정하기
샌드박스 만들기
mkdir -p ~/nanoclaw-workspace
docker sandbox create --name nanoclaw shell ~/nanoclaw-workspace
샌드박스에 연결하기
docker sandbox run nanoclaw
이제 샌드박스 안에 들어왔습니다—격리된 VM에서 실행되는 Ubuntu 셸입니다. 여기부터 진행되는 모든 작업은 샌드박스 내부에서 이루어집니다.
Claude Code 설치하기
셸 샌드박스에는 Node.js 20이 미리 설치되어 있으므로, npm을 통해 Claude Code를 설치합니다:
npm install -g @anthropic-ai/claude-code
API 키 설정하기
내장된 claude 샌드박스 타입은 키를 자동으로 설정해 주지만, 일반 셸에서는 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 호출을 가로채어 이 sentinel 값을 실제 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 QR 코드를 스캔하고 나머지 설정을 안내해 줍니다.
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
또 무엇을 실행할 수 있을까요?
셸 샌드박스는 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