container-use: AI 코딩 에이전트를 위한 컨테이너 기반 개발 환경

container-use 소개

AI 코딩 에이전트를 활용한 개발이 점점 보편화되면서, 각 에이전트가 독립적인 환경에서 안전하게 작업할 수 있는 인프라가 중요해졌습니다. Dagger의 container-use는 이러한 요구를 충족시키기 위해 등장한 오픈소스 도구로, 에이전트별로 격리된 컨테이너 환경을 제공하여 충돌 없이 병렬 작업을 가능하게 합니다. 특히 Claude Code, Cursor, VSCode, goose 등 다양한 MCP(Multi-agent Control Protocol) 호환 에이전트와의 통합을 지원하여, 실험적인 AI 개발에 최적화된 환경을 제공합니다.

container-use 사용 데모

container-use는 Dagger에서 개발한 오픈소스 프로젝트로, AI 코딩 에이전트들이 각자의 컨테이너 환경에서 독립적으로 작업할 수 있도록 지원합니다. 이 도구를 사용하면 에이전트마다 별도의 Git 브랜치와 컨테이너를 할당하여, 서로 간의 작업 충돌을 방지하고, 실패한 작업을 즉시 폐기하거나 롤백할 수 있습니다.

또한, 실시간으로 에이전트의 명령어 실행 기록과 로그를 확인할 수 있으며, 필요시 에이전트의 터미널에 직접 접속하여 상태를 점검하거나 개입할 수 있습니다. 이러한 기능들은 복잡한 멀티 에이전트 시스템에서의 디버깅과 실험을 보다 효율적으로 만들어줍니다.

:warning:주의:warning:: 현재 container-use는 초기 개발 단계에 있으며, 빠른 속도로 기능이 추가되고 있습니다. 따라서 일부 문서가 부족하거나 변경 사항이 있을 수 있지만, 활발한 커뮤니티와 빠른 피드백을 통해 지속적으로 개선되고 있습니다.

기존의 에이전트 기반 개발 환경에서는 여러 에이전트가 동일한 시스템 리소스를 공유하면서 작업 충돌이나 환경 설정 충돌이 발생하기 쉬웠습니다. 반면, container-use는 각 에이전트에게 독립된 컨테이너와 Git 브랜치를 제공하여 이러한 문제를 근본적으로 해결합니다.

또한, Git 기반의 워크플로우를 활용하여 에이전트의 작업 이력을 관리하고, 필요시 특정 브랜치로 체크아웃하여 작업 내용을 검토하거나 롤백할 수 있습니다. 이러한 접근 방식은 기존의 단일 환경에서의 에이전트 관리보다 훨씬 유연하고 안전한 개발 환경을 제공합니다.

container-use의 주요 기능

  • 에이전트별 격리 환경: 각 에이전트는 독립된 컨테이너와 Git 브랜치에서 작업하여 충돌 없이 병렬로 실행됩니다.
  • 실시간 로그 및 명령어 기록: 에이전트가 실행한 모든 명령어와 로그를 실시간으로 확인할 수 있습니다.
  • 직접 개입 기능: 에이전트의 터미널에 직접 접속하여 상태를 점검하거나 문제를 해결할 수 있습니다.
  • 표준 Git 워크플로우 지원: git checkout <branch_name> 명령어로 에이전트의 작업 내용을 쉽게 검토하거나 롤백할 수 있습니다.
  • 다양한 에이전트와의 통합 지원: Claude Code, Cursor, goose, VSCode, GitHub Copilot 등 다양한 MCP 호환 에이전트와의 통합을 지원합니다.
  • 에이전트 작업 모니터링: cu watch 명령어를 통해 에이전트의 작업 진행 상황을 실시간으로 모니터링할 수 있습니다.

사용 방법

설치

make install && hash -r

위 명령어를 실행하면 cu 바이너리가 $PATH 에 추가되어 바로 사용할 수 있습니다.

에이전트 통합 설정

  • container-use를 Claude Code와 통합하여 사용하시려면 다음과 같이 명령어를 실행하시면 됩니다. 이 때, 부분은 실제 cu의 설치 위치로 바꿔주세요:

    npx @anthropic-ai/claude-code mcp add container-use -- <path to cu> stdio
    curl -o CLAUDE.md https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md
    
  • container-use를 goose와 통합하시려면 다음과 같은 설정을 goose 설정 파일(~/.config/goose/config.yaml)에 추가해주세요:

    # ~/.config/goose/config.yaml
    extensions:
      container-use:
        name: container-use
        type: stdio
        enabled: true
        cmd: cu
        args:
        - stdio
        envs: []
    
  • container-use를 Cursor와 함께 통합하시려면 다음 명령어를 실행해주세요:

    curl --create-dirs -o .cursor/rules/container-use.mdc https://raw.githubusercontent.com/dagger/container-use/main/rules/cursor.mdc
    
  • container-use를 VSCode / GitHub Copilot**과 함께 통합하시려면 다음 명령어를 실행해주세요:

    curl --create-dirs -o .github/copilot-instructions.md https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md
    

VSCode 또는 GitHub Copilot과의 통합을 위해 위 명령어를 실행합니다.

예제 실행 예시

container-use에서는 3가지 예시 파일들을 제공하고 있습니다. 이러한 예제 파일들로 container-use의 기능을 테스트할 수 있습니다:

  • hello_world.md: 간단한 앱을 생성하고 로컬호스트에서 실행하는 예제입니다. 다음과 같은 명령어로 Claude Code로 실행해 볼 수 있습니다:

    cat ./examples/hello_world.md | claude
    
  • parallel.md: Flask와 FastAPI를 사용하여 두 개의 변형된 “Hello World” 앱을 서로 다른 URL에서 동시에 실행하는 예제입니다.

  • security.md: 저장소의 업데이트 및 취약점을 검사하고, 업데이트를 적용한 후 빌드가 정상적으로 작동하는지 확인하며 패치 파일을 생성하는 보안 스캐닝 예제입니다. 다음과 같은 명령어로 goose로 실행해 볼 수 있습니다:

    goose run -i ./examples/hello_world.md -s
    

라이선스

container-use 프로젝트는 Apache-2.0 라이선스로 공개 및 배포되고 있습니다. 상업적 사용에 대한 제한은 없으며, 자유롭게 사용하실 수 있습니다.

:github: container-use GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: