Post

Docker Sandboxes Shell로 NanoClaw 실행하기: AI 에이전트를 위한 안전한 격리 환경

Docker Sandboxes의 새로운 shell 샌드박스 타입으로 NanoClaw WhatsApp 어시스턴트를 안전하게 실행하는 방법을 알아보세요. MicroVM 기반 격리와 프록시 관리 API 키로 보안을 강화합니다.

Docker Sandboxes Shell로 NanoClaw 실행하기: AI 에이전트를 위한 안전한 격리 환경

3줄 요약

  • Docker Sandboxes의 새로운 shell 샌드박스 타입을 사용하여 NanoClaw WhatsApp AI 어시스턴트를 격리된 환경에서 안전하게 실행할 수 있습니다.
  • MicroVM 기반 파일시스템 격리와 Docker의 프록시를 통한 API 키 관리로 추가적인 보안 계층을 제공합니다.
  • 최소한의 Ubuntu 환경에서 시작해 필요한 도구를 직접 설치하는 유연한 접근 방식으로 다양한 AI 에이전트 실행이 가능합니다.

📌 주요 내용

Docker Sandboxes의 Shell 샌드박스란?

Docker Sandboxes는 Claude Code, Gemini CLI 등 AI 코딩 에이전트를 실행하기 위한 사전 구성된 환경을 제공합니다. 하지만 내장되지 않은 다른 에이전트나 도구를 실행하고 싶다면 어떻게 해야 할까요?

바로 여기서 shell 샌드박스가 필요합니다. Shell 샌드박스는 격리된 microVM 내부의 대화형 bash 셸로 사용자를 연결하는 최소한의 샌드박스입니다. 사전 설치된 에이전트나 특정 의견이 없으며, Node.js, Python, git 및 일반적인 개발 도구가 포함된 깨끗한 Ubuntu 환경만 제공합니다. 필요한 것은 직접 설치하면 됩니다.

NanoClaw를 샌드박스에서 실행하는 이유

NanoClaw는 이미 에이전트를 컨테이너에서 실행하므로 기본적으로 보안을 고려한 설계입니다. 그러나 전체 NanoClaw 프로세스를 Docker 샌드박스 내부에서 실행하면 다음과 같은 추가 보안 계층이 제공됩니다:

  1. 파일시스템 격리 - NanoClaw는 마운트한 작업 공간 디렉토리만 볼 수 있으며 홈 디렉토리는 접근할 수 없습니다
  2. 자격 증명 관리 - API 키는 Docker의 프록시를 통해 주입되며 샌드박스 내부에 저장되지 않습니다
  3. 깨끗한 환경 - 호스트의 Node.js 버전이나 전역 패키지와 충돌하지 않습니다
  4. 폐기 가능성 - docker sandbox rm 명령으로 언제든지 완전히 제거하고 새로 시작할 수 있습니다

사전 요구사항

NanoClaw를 Docker Sandboxes에서 실행하기 전에 다음 항목이 필요합니다:

  • Docker Desktop 설치 및 실행
  • Docker Sandboxes CLI (docker sandbox 명령 사용 가능) (2026년 2월 13일 기준 nightly 빌드에서 v.0.12.0 사용 가능)
  • 환경 변수에 저장된 Anthropic API 키

설정 방법

샌드박스 생성

샌드박스 내부의 작업 공간으로 마운트될 호스트의 디렉토리를 선택합니다. 이것이 샌드박스가 볼 수 있는 파일시스템의 유일한 부분입니다:

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

샌드박스 연결

1
docker sandbox run nanoclaw

이제 샌드박스 내부에 있습니다. 격리된 VM에서 실행되는 Ubuntu 셸입니다. 여기서부터의 모든 작업은 샌드박스 내부에서 발생합니다.

Claude Code 설치

Shell 샌드박스에는 Node.js 20이 사전 설치되어 있으므로 npm을 통해 Claude Code를 직접 설치할 수 있습니다:

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

API 키 구성

Shell 샌드박스에서 필요한 추가 단계입니다. 내장된 claude 샌드박스 타입은 이를 자동으로 수행하지만, 일반 셸에서는 Claude Code가 Docker의 자격 증명 프록시에서 API 키를 가져오도록 지시해야 합니다:

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

이 설정의 의미: apiKeyHelper는 Claude Code에게 API 키를 가져오기 위해 echo proxy-managed를 실행하도록 지시합니다. 샌드박스의 네트워크 프록시가 나가는 API 호출을 가로채서 이 센티널 값을 실제 Anthropic 키로 교체하므로 실제 키는 샌드박스 내부에 존재하지 않습니다.

NanoClaw 클론 및 종속성 설치

1
2
3
4
cd ~/workspace
git clone https://github.com/qwibitai/nanoclaw
cd nanoclaw
npm install

Claude 실행 및 NanoClaw 설정

NanoClaw는 초기 설정(WhatsApp 인증, 데이터베이스, 컨테이너 런타임 구성)에 Claude Code를 사용합니다:

1
claude

Claude가 시작되면 /setup을 실행하고 프롬프트를 따릅니다. Claude가 WhatsApp QR 코드 스캔 및 기타 모든 설정을 안내합니다.

NanoClaw 시작

설정이 완료되면 어시스턴트를 시작합니다:

1
npm start

이제 NanoClaw가 샌드박스 내부에서 실행되며 WhatsApp 메시지를 수신 대기합니다.

샌드박스 관리

Docker Sandboxes는 다양한 관리 명령을 제공합니다:

1
2
3
4
5
6
7
8
9
10
11
# 모든 샌드박스 나열
docker sandbox ls

# 샌드박스 중지 (NanoClaw도 함께 중지)
docker sandbox stop nanoclaw

# 다시 시작
docker sandbox start nanoclaw

# 완전히 제거
docker sandbox rm nanoclaw

다른 활용 사례

Shell 샌드박스는 NanoClaw에만 특화되지 않았습니다. Linux에서 실행되고 AI API와 통신하는 모든 것이 적합합니다:

  • Claude Agent SDK 또는 기타 AI 에이전트로 구축된 커스텀 에이전트: Claude Code, Codex, Github Copilot, OpenCode, Kiro 등
  • AI 기반 봇 및 자동화 스크립트
  • 호스트에서 실행하고 싶지 않은 실험적인 도구

패턴은 항상 동일합니다: 샌드박스를 생성하고, 필요한 것을 설치하고, 프록시를 통해 자격 증명을 구성하고, 실행합니다.

1
2
docker sandbox create --name my-shell shell ~/my-workspace
docker sandbox run my-shell

👨‍💻 개발자에게 미치는 영향

보안과 유연성의 균형

Docker Sandboxes의 shell 타입은 개발자에게 보안과 유연성 사이의 이상적인 균형을 제공합니다. 사전 구성된 환경의 편리함을 포기하는 대신, 완전한 제어권과 함께 강력한 격리 기능을 얻을 수 있습니다. 이는 특히 AI 에이전트처럼 시스템 수준 접근이 필요하지만 보안 위험을 최소화해야 하는 애플리케이션에 이상적입니다.

AI 에이전트 개발의 새로운 패러다임

MicroVM 기반 격리와 프록시 관리 자격 증명을 결합한 접근 방식은 AI 에이전트 개발에 새로운 패러다임을 제시합니다. 개발자는 더 이상 보안과 기능성 사이에서 선택할 필요가 없으며, 실험적인 AI 도구를 안전하게 테스트하고 프로덕션 환경으로 쉽게 전환할 수 있습니다.

실무 적용 가능성

NanoClaw 외에도 이 패턴은 Claude Code, Gemini, Codex, Github Copilot, OpenCode, Kiro 등 다양한 AI 코딩 에이전트에 적용될 수 있습니다. Docker Desktop의 nightly 빌드에서 v.0.12.0을 사용할 수 있으므로, 개발자들은 즉시 이 새로운 기능을 실험하고 자신의 워크플로우에 통합할 수 있습니다.

원문 기사 보기

This post is licensed under CC BY 4.0 by the author.