코딩 에이전트를 위한 Docker 샌드박스 사용
Source: Dev.to
Scenario
코딩 에이전트를 다음과 같이 사용하고 싶습니다:
- 실제 코드베이스 수정
- 시스템 의존성 설치
- 컨테이너 빌드 및 실행
- 허용 플래그를 사용해 무인으로 실행
…하지만 노트북이나 자격 증명을 위험에 빠뜨리지 않으면서. Docker Sandbox는 프로젝트 작업 공간만 마운트된 일회용 microVM 안에서 에이전트를 실행함으로써 이를 해결합니다.
Step 1: Create a Sandbox
로컬 프로젝트 디렉터리를 작업 공간으로 사용하여 새 sandbox를 생성합니다:
docker sandbox create --name agent-sandbox --workspace ./my-project
What this does:
- 전용 microVM을 생성
./my-project만 sandbox에 마운트- OS, 홈 디렉터리, 비밀 정보는 격리된 상태 유지
Step 2: Enter the Sandbox
sandbox 안에서 인터랙티브 셸을 시작합니다:
docker sandbox exec agent-sandbox bash
이제 sandbox 내부에 있으며, 호스트 머신이 아닙니다. 이제부터:
- 모든 패키지 설치
- 모든 설정 변경
- 모든 Docker 명령
…은 완전히 격리됩니다.
Step 3: Run a Coding Agent (Unattended)
sandbox 안에서 코딩 에이전트를 허용 모드로 실행합니다:
claude-code run --dangerously-skip-permissions --project /workspace
Why this is safe:
- 에이전트가 microVM 안에서 실행됨
- 프로젝트 디렉터리만 쓰기 가능
- 호스트 OS, SSH 키, 자격 증명에 접근할 수 없음
이것이 Docker Sandbox의 예정된 워크플로입니다.
Step 4: Let the Agent Install Dependencies
에이전트는 환경을 자유롭게 수정할 수 있습니다:
apt-get update
apt-get install -y nodejs npm
권한 프롬프트나 승인 루프가 없으며, 머신에 위험이 없습니다.
Step 5: Let the Agent Use Docker
sandbox 안에서 에이전트는 컨테이너를 빌드하고 실행할 수 있습니다:
docker build -t my-app .
docker run -p 8080:8080 my-app
Important notes:
- 이는 호스트 Docker 데몬을 사용하지 않음
- 컨테이너는 sandbox microVM 내부에서 완전히 실행됨
이 기능이 Docker Sandbox를 일반 컨테이너와 근본적으로 구분시키는 이유입니다.
Step 6: Review the Results on the Host
sandbox를 종료하고 변경 사항을 확인합니다:
git diff
에이전트가 만든 의도된 코드 변경만 표시됩니다—불필요한 시스템 패키지, OS 파일 수정, 백그라운드 프로세스는 없습니다.
Step 7: Delete the Sandbox
작업이 끝났으면 sandbox를 삭제합니다:
docker sandbox delete agent-sandbox
microVM이 즉시 파괴되어 환경이 완전히 사라집니다. 코드 변경 외에는 아무것도 남지 않으므로 다음 번에 깨끗한 상태로 시작할 수 있습니다.
Why This Pattern Works
Docker Sandbox는 에이전트에게:
- 실제 운영 체제
- 패키지 매니저와 시스템 도구
- Docker 접근 권한
- 완전한 자율성
을 제공하면서, 사용자에게는:
- microVM을 통한 강력한 격리
- 일회용 환경
- 호스트 오염 제로
- 허용 모드 사용에 대한 자신감
을 제공합니다.
When to Use Docker Sandboxes
다음 상황에 이 패턴이 이상적입니다:
- 코딩 에이전트를 무인으로 실행할 때
--dangerously-skip-permissions같은 플래그 사용 시- 에이전트가 도구를 동적으로 설치하도록 허용할 때
- 에이전트가 컨테이너를 빌드하고 실행하도록 할 때
- 두려움 없이 적극적으로 실험하고자 할 때
에이전트는 자유가 필요하고, 여러분의 머신은 그렇지 않아도 됩니다.