Repolode
losfair

losfair/bake

Firecracker microVM에 컨테이너를 실행하는 Linux CLI로, VM 구성 요소를 단일 실행 파일에 담습니다.

스타
483
포크
19
열린 이슈
1
마지막 커밋
9개월 전

어떤 프로젝트인가요?

bake는 Firecracker microVM과 커널, initrd, 루트 파일 시스템을 하나의 ELF 바이너리로 패키징합니다. 이 바이너리를 실행하면 microVM이 부팅되고 내부에서 컨테이너 엔트리포인트가 시작되므로, 자체 격리된 Linux 환경을 포함하는 독립형 애플리케이션처럼 동작합니다.

호스트와 게스트 간 통신은 모두 vsock을 통한 userspace 방식으로 이뤄지므로 root 권한이 필요하지 않습니다. 프로젝트는 SOCKS5 프록시와 UDP 브리지를 통한 외부 네트워킹, 선택적 WireGuard 구성, -p를 사용한 호스트에서 VM으로의 포트 게시, -v를 사용한 9p 디렉터리 공유를 제공합니다. --allow-net 옵션을 사용하면 게스트가 연결할 수 있는 IPv4 대상도 제한할 수 있습니다.

게스트는 overlay 루트 파일 시스템을 설정하고 runc로 컨테이너를 실행하는 init 루틴을 실행합니다. ssh 하위 명령으로 실행 중인 인스턴스에 연결할 수 있으며, systemd 하위 명령은 바이너리용 서비스 유닛을 출력합니다.

핵심 기능

  • 01Firecracker 바이너리, 커널, initrd, rootfs를 하나의 실행 파일에 포함합니다.
  • 02root 권한 없이 실행되며, 호스트와 게스트 간 트래픽은 vsock으로 전달됩니다.
  • 03SOCKS5 프록시와 UDP 브리지를 통해 외부 네트워킹을 제공하며, IPv4 허용 목록을 지원합니다.
  • 04-p로 호스트 포트를 VM에 전달하고 -v로 9p를 통해 디렉터리를 공유합니다.
  • 05WireGuard 구성을 지원하며, ssh 하위 명령으로 실행 중인 인스턴스에 연결할 수 있습니다.

활용 사례

  • 컨테이너화된 애플리케이션을 자체 microVM에서 실행되는 단일 바이너리로 배포합니다.
  • Linux 호스트에서 VM 수준의 격리를 적용해 신뢰할 수 없거나 샌드박스 처리된 워크로드를 실행합니다.
  • IPv4 허용 목록으로 애플리케이션의 외부 네트워크 접근을 제한합니다.

빠른 시작

  1. 1

    출력 디렉터리를 만듭니다

    mkdir -p output
  2. 2

    Docker 이미지를 사용해 bake 바이너리를 빌드합니다(호스트와 대상 모두 amd64)

    docker run -it --rm -v ./rootfs.squashfs.img:/rootfs.img:ro -v ./output:/output --entrypoint /opt/bake/bake.amd64 ghcr.io/losfair/bake --input /opt/bake/bake.amd64 --firecracker /opt/bake/firecracker.amd64 --kernel /opt/bake/kernel.amd64 --initrd /opt/bake/initrd.amd64.img --rootfs /rootfs.img --output /output/app.elf
  3. 3

    microVM을 시작하고 그 안에서 명령을 실행합니다

    ./output/app.elf -- uname -a

사용 전 알아둘 점

  • Linux 전용이며, 빌드 시 Firecracker 리소스를 포함해야 합니다.
  • 빌드 전에 입력으로 사용할 준비된 rootfs squashfs 이미지가 필요합니다.

토픽

자주 묻는 질문

bake은(는) 무엇인가요?
Firecracker microVM에 컨테이너를 실행하는 Linux CLI로, VM 구성 요소를 단일 실행 파일에 담습니다. bake는 Firecracker microVM과 커널, initrd, 루트 파일 시스템을 하나의 ELF 바이너리로 패키징합니다. 이 바이너리를 실행하면 microVM이 부팅되고 내부에서 컨테이너 엔트리포인트가 시작되므로, 자체 격리된 Linux 환경을 포함하는 독립형 애플리케이션처럼 동작합니다.
bake은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
bake은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
bake은(는) 아직 유지보수되고 있나요?
6개월 이상 커밋 없음. bake의 마지막 커밋은 2026년 2월 2일입니다.
bake은(는) 어디에 사용할 수 있나요?
컨테이너화된 애플리케이션을 자체 microVM에서 실행되는 단일 바이너리로 배포합니다. Linux 호스트에서 VM 수준의 격리를 적용해 신뢰할 수 없거나 샌드박스 처리된 워크로드를 실행합니다. IPv4 허용 목록으로 애플리케이션의 외부 네트워크 접근을 제한합니다.
bake는 어떻게 설치하나요?
출력 디렉터리를 만듭니다: mkdir -p output Docker 이미지를 사용해 bake 바이너리를 빌드합니다(호스트와 대상 모두 amd64): docker run -it --rm -v ./rootfs.squashfs.img:/rootfs.img:ro -v ./output:/output --entrypoint /opt/bake/bake.amd64 ghcr.io/losfair/bake --input /opt/bake/bake.amd64 --firecracker /opt/bake/firecracker.amd64 --kernel /opt/bake/kernel.amd64 --initrd /opt/bake/initrd.amd64.img --rootfs /rootfs.img --output /output/app.elf microVM을 시작하고 그 안에서 명령을 실행합니다: ./output/app.elf -- uname -a
bake은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/losfair/bake

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트