샌드박스 Docker 컨테이너에서 Claude Code 실행하기
Claude Code를 프로젝트 외부의 어떤 것에도 영향을 주지 않으면서, 모든 권한을 부여하여 실행하고 싶었던 적이 있다면 이 도구가 적합합니다. 이 한 줄짜리 설치 스크립트가 바로 그 역할을 수행합니다.
이 스크립트는 Claude Code와 rtk CLI가 사전 설치된 최소한의 Docker 이미지(node:22-slim)를 빌드한 다음, 두 개의 쉘 별칭(shell aliases)을 연결합니다:
claude-docker — --dangerously-skip-permissions 옵션과 함께 컨테이너 내부에서 Claude Code를 실행하며, 현재 디렉토리가 /workspace에 마운트됩니다.
claude-docker-sh — 동일한 컨테이너 내의 bash 쉘로 진입하며, 내부를 살펴보거나 디버깅할 때 유용합니다.
모든 것이 컨테이너 내부에서 실행되기 때문에,
curl -s https://gist.githubusercontent.com/acashjos/93f47fce263dcaaa1cd5ba38b4459ffb/raw/5944ef120f150ca08287d406ff3397a6687b871f/claude-docker-install-zsh.sh | sh
또는 먼저 다운로드하여 검토한 후 실행할 수 있습니다:
curl -O https://gist.githubusercontent.com/acashjos/93f47fce263dcaaa1cd5ba38b4459ffb/raw/5944ef120f150ca08287d406ff3397a6687b871f/claude-docker-install-bash.sh
chmod +x claude-docker-install-bash.sh
./claude-docker-install-bash.sh
이 스크립트는 이미지를 빌드하고, 별칭(alias)을 .bashrc (또는 .zshrc) 파일에 추가하며, 해당 파일을 소싱하여 즉시 사용 가능하게 만듭니다.
사용법 (Usage)
어떤 프로젝트 디렉토리에서든:
이 명령어는 현재 작업 디렉토리를 컨테이너 내부로 마운트하고, 모든 권한을 부여받은 상태로 Claude Code를 시작합니다. 첫 실행 시에는 Claude Code 내부의 /login 명령어를 사용하여 인증을 완료해야 합니다.
대신 동일한 환경에서 일반 쉘(shell)이 필요하다면?
왜 컨테이너화하는가 (Why containerize it)
--dangerously-skip-permissions 옵션을 사용하여 베어 호스트(bare host)에서 Claude Code를 실행하면, 해당 사용자의 계정이 읽기, 쓰기 또는 실행할 수 있는 모든 것에 접근할 수 있게 됩니다. 이를 Docker로 감싸고 $HOME/.claude-docker와 프로젝트 디렉토리만 마운트함으로써, 잠재적 피해 범위(blast radius)를 이 두 경로로 제한합니다. 이는 완전한 수동 승인과 완전한 자율성 사이의 합리적인 중간 지점입니다.
전체 소스 코드 및 두 쉘 변형 버전: gist.github.com/acashjos/93f47fce263dcaaa1cd5ba38b4459ffb