오늘도 열정 가득한 개발자분들의 반짝이는 고민을 엿봤어요. 'smolvm'이라니, 이름부터 정말 귀엽지 않나요? 1초도 안 되는 시간에 세상을 격리하고, 내 소중한 코드를 어디서든 똑같이 실행할 수 있게 해준다니 정말 따뜻한 혁신인 것 같아요!
우리 모두 개발 환경을 망치고 속상했던 밤이 한 번쯤은 있잖아요. 이 기술은 그런 개발자들의 마음을 이해하고, 번거로운 의존성 문제에서 우리를 해방해주려는 다정한 배려 같아요. 비록 아직은 성장 중인 아기 같은 도구지만, 복잡한 세상 속에서 우리만의 안전한 안식처를 만들어줄 것 같아 설레요. 더 많은 이들에게 평온한 개발의 즐거움을 선물해주길, 마음 깊이 응원할게요! 모두 오늘도 따뜻한 하루 보내세요.
Original News: Smol machines – 서브초 콜드스타트, 이식 가능한 가상머신
[원본 링크]
smolvm은 macOS와 Linux에서 동작하는 CLI 기반 가상머신 관리 도구로, 격리된 환경에서 소프트웨어를 실행함
서브초(1초 미만) 콜드스타트, 탄력적 메모리 관리, 단일 파일 이식성을 지원해 빠르고 가벼운 VM 실행 가능
VM은 리눅스 커널 기반 마이크로VM 형태로 구동되며, .smolmachine 파일로 패키징해 의존성 없이 재실행 가능
하이퍼바이저 경계 격리, SSH 에이전트 포워딩, Smolfile 기반 환경 선언 등으로 개발·보안 환경을 통합 지원
Docker 데몬 없이 OCI 이미지 부팅을 지원하며, 200ms 미만 부팅 시간과 하드웨어 수준 격리로 경량 가상화 대안 제시
개요
smolvm은 격리된 환경에서 소프트웨어를 실행하기 위한 CLI 기반 가상머신 관리 도구
macOS와 Linux에서 동작하며, 서브초 콜드스타트, 탄력적 메모리 사용, 이식 가능한 단일 파일 패키징을 지원
각 워크로드는 리눅스 커널 기반 마이크로VM으로 실행되며, 하드웨어 수준의 격리를 제공
.smolmachine 파일로 패키징된 VM은 동일 아키텍처의 플랫폼에서 의존성 없이 재실행 가능
주요 기능
로컬 가상머신 관리 및 실행
smolvm machine run 명령으로 커스텀 리눅스 VM 실행
콜드스타트는 1초 미만이며, macOS와 Linux 모두 지원
메모리는 virtio balloon으로 탄력 관리되어 실제 사용량만 호스트에 할당됨
이식 가능한 단일 파일 패키징
VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성 가능
모든 의존성이 내장되어 설치 없이 즉시 실행 가능, 부팅 시간은 200ms 미만
불신 코드 샌드박싱
하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명을 완전히 분리
기본 네트워크는 비활성화 상태이며, --allow-host 옵션으로 특정 호스트만 허용 가능
지속형 개발용 VM
machine create, start, stop 명령으로 VM 생성 및 관리
설치된 패키지가 재시작 후에도 유지되어 개발 환경으로 활용 가능
SSH 에이전트 포워딩
호스트의 SSH 에이전트를 VM 내부로 전달하되, 개인키는 게스트로 복사되지 않음
--ssh-agent 옵션으로 호스트의 SSH 인증을 안전하게 활용 가능
Smolfile 기반 환경 선언
TOML 형식의 Smolfile로 VM 설정을 선언
이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정해 재현 가능한 환경 구성 가능
사용 예시
임시 VM 실행
smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"
종료 시 VM이 자동 정리되는 일회성 실행 방식
패키징된 실행 파일 생성
smolvm pack create --image python:3.12-alpine -o ./python312
생성된 실행 파일로 독립적인 Python 환경 실행 가능
네트워크 제어
기본 네트워크는 비활성화
--allow-host 옵션으로 특정 도메인만 접근 허용
SSH 및 Git 사용
smolvm machine run --ssh-agent --net --image alpine
호스트의 SSH 키를 안전하게 사용해 Git 리포지토리 접근 가능
내부 구조 및 동작 방식
각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널을 실행
libkrun 기반 VMM과 커스텀 커널(libkrunfw) 을 사용
OCI 이미지 포맷을 지원해 Docker Hub, ghcr.io 등에서 이미지를 직접 가져와 실행 가능
Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
기본 설정은 4 vCPU, 8GiB RAM, --cpus, --mem 옵션으로 조정 가능
vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전되어 과할당 비용이 거의 없음
비교
항목
smolvm
Containers
Colima
QEMU
Firecracker
Kata
격리 수준
워크로드별 VM
네임스페이스(공유 커널)
네임스페이스(단일 VM)
개별 VM
개별 VM
컨테이너별 VM
부팅 시간
<200ms
약 100ms
수 초
15~30초
<125ms
약 500ms
아키텍처
라이브러리(libkrun)
데몬
VM 내 데몬
프로세스
프로세스
런타임 스택
워크로드별 VM
지원
미지원
공유
지원
지원
지원
macOS 네이티브
지원
Docker VM 경유
krunkit 기반
지원
미지원
미지원
SDK 내장
지원
미지원
미지원
미지원
미지원
미지원
이식 가능한 아티팩트
.smolmachine
데몬 필요 이미지
미지원
미지원
미지원
미지원
플랫폼 지원
호스트
게스트
요구사항
macOS Apple Silicon
arm64 Linux
macOS 11 이상
macOS Intel
x86_64 Linux
macOS 11 이상 (테스트 미완료)
Linux x86_64
x86_64 Linux
KVM(/dev/kvm) 필요
Linux aarch64
aarch64 Linux
KVM(/dev/kvm) 필요
알려진 제한 사항
네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
TCP/UDP만 지원, ICMP 미지원
볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능
--ssh-agent 사용 시 호스트에 SSH 에이전트가 실행 중이어야 함 (SSH_AUTH_SOCK 설정 필요)
개발 관련
개발 지침은 docs/DEVELOPMENT.md에서 확인 가능
Apache-2.0 라이선스로 공개되어 있으며, @binsquare가 제작
서브초(1초 미만) 콜드스타트, 탄력적 메모리 관리, 단일 파일 이식성을 지원해 빠르고 가벼운 VM 실행 가능
VM은 리눅스 커널 기반 마이크로VM 형태로 구동되며, .smolmachine 파일로 패키징해 의존성 없이 재실행 가능
하이퍼바이저 경계 격리, SSH 에이전트 포워딩, Smolfile 기반 환경 선언 등으로 개발·보안 환경을 통합 지원
Docker 데몬 없이 OCI 이미지 부팅을 지원하며, 200ms 미만 부팅 시간과 하드웨어 수준 격리로 경량 가상화 대안 제시
개요
smolvm은 격리된 환경에서 소프트웨어를 실행하기 위한 CLI 기반 가상머신 관리 도구
macOS와 Linux에서 동작하며, 서브초 콜드스타트, 탄력적 메모리 사용, 이식 가능한 단일 파일 패키징을 지원
각 워크로드는 리눅스 커널 기반 마이크로VM으로 실행되며, 하드웨어 수준의 격리를 제공
.smolmachine 파일로 패키징된 VM은 동일 아키텍처의 플랫폼에서 의존성 없이 재실행 가능
주요 기능
로컬 가상머신 관리 및 실행
smolvm machine run 명령으로 커스텀 리눅스 VM 실행
콜드스타트는 1초 미만이며, macOS와 Linux 모두 지원
메모리는 virtio balloon으로 탄력 관리되어 실제 사용량만 호스트에 할당됨
이식 가능한 단일 파일 패키징
VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성 가능
모든 의존성이 내장되어 설치 없이 즉시 실행 가능, 부팅 시간은 200ms 미만
불신 코드 샌드박싱
하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명을 완전히 분리
기본 네트워크는 비활성화 상태이며, --allow-host 옵션으로 특정 호스트만 허용 가능
지속형 개발용 VM
machine create, start, stop 명령으로 VM 생성 및 관리
설치된 패키지가 재시작 후에도 유지되어 개발 환경으로 활용 가능
SSH 에이전트 포워딩
호스트의 SSH 에이전트를 VM 내부로 전달하되, 개인키는 게스트로 복사되지 않음
--ssh-agent 옵션으로 호스트의 SSH 인증을 안전하게 활용 가능
Smolfile 기반 환경 선언
TOML 형식의 Smolfile로 VM 설정을 선언
이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정해 재현 가능한 환경 구성 가능
사용 예시
임시 VM 실행
smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"
종료 시 VM이 자동 정리되는 일회성 실행 방식
패키징된 실행 파일 생성
smolvm pack create --image python:3.12-alpine -o ./python312
생성된 실행 파일로 독립적인 Python 환경 실행 가능
네트워크 제어
기본 네트워크는 비활성화
--allow-host 옵션으로 특정 도메인만 접근 허용
SSH 및 Git 사용
smolvm machine run --ssh-agent --net --image alpine
호스트의 SSH 키를 안전하게 사용해 Git 리포지토리 접근 가능
내부 구조 및 동작 방식
각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널을 실행
libkrun 기반 VMM과 커스텀 커널(libkrunfw) 을 사용
OCI 이미지 포맷을 지원해 Docker Hub, ghcr.io 등에서 이미지를 직접 가져와 실행 가능
Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
기본 설정은 4 vCPU, 8GiB RAM, --cpus, --mem 옵션으로 조정 가능
vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전되어 과할당 비용이 거의 없음
비교
항목
smolvm
Containers
Colima
QEMU
Firecracker
Kata
격리 수준
워크로드별 VM
네임스페이스(공유 커널)
네임스페이스(단일 VM)
개별 VM
개별 VM
컨테이너별 VM
부팅 시간
<200ms
약 100ms
수 초
15~30초
<125ms
약 500ms
아키텍처
라이브러리(libkrun)
데몬
VM 내 데몬
프로세스
프로세스
런타임 스택
워크로드별 VM
지원
미지원
공유
지원
지원
지원
macOS 네이티브
지원
Docker VM 경유
krunkit 기반
지원
미지원
미지원
SDK 내장
지원
미지원
미지원
미지원
미지원
미지원
이식 가능한 아티팩트
.smolmachine
데몬 필요 이미지
미지원
미지원
미지원
미지원
플랫폼 지원
호스트
게스트
요구사항
macOS Apple Silicon
arm64 Linux
macOS 11 이상
macOS Intel
x86_64 Linux
macOS 11 이상 (테스트 미완료)
Linux x86_64
x86_64 Linux
KVM(/dev/kvm) 필요
Linux aarch64
aarch64 Linux
KVM(/dev/kvm) 필요
알려진 제한 사항
네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
TCP/UDP만 지원, ICMP 미지원
볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능
--ssh-agent 사용 시 호스트에 SSH 에이전트가 실행 중이어야 함 (SSH_AUTH_SOCK 설정 필요)
개발 관련
개발 지침은 docs/DEVELOPMENT.md에서 확인 가능
Apache-2.0 라이선스로 공개되어 있으며, @binsquare가 제작
smolvm은 macOS와 Linux에서 동작하는 CLI 기반 가상머신 관리 도구로, 격리된 환경에서 소프트웨어를 실행함
서브초(1초 미만) 콜드스타트, 탄력적 메모리 관리, 단일 파일 이식성을 지원해 빠르고 가벼운 VM 실행 가능
VM은 리눅스 커널 기반 마이크로VM 형태로 구동되며, .smolmachine 파일로 패키징해 의존성 없이 재실행 가능
하이퍼바이저 경계 격리, SSH 에이전트 포워딩, Smolfile 기반 환경 선언 등으로 개발·보안 환경을 통합 지원
Docker 데몬 없이 OCI 이미지 부팅을 지원하며, 200ms 미만 부팅 시간과 하드웨어 수준 격리로 경량 가상화 대안 제시
개요
smolvm은 격리된 환경에서 소프트웨어를 실행하기 위한 CLI 기반 가상머신 관리 도구
macOS와 Linux에서 동작하며, 서브초 콜드스타트, 탄력적 메모리 사용, 이식 가능한 단일 파일 패키징을 지원
각 워크로드는 리눅스 커널 기반 마이크로VM으로 실행되며, 하드웨어 수준의 격리를 제공
.smolmachine 파일로 패키징된 VM은 동일 아키텍처의 플랫폼에서 의존성 없이 재실행 가능
주요 기능
로컬 가상머신 관리 및 실행
smolvm machine run 명령으로 커스텀 리눅스 VM 실행
콜드스타트는 1초 미만이며, macOS와 Linux 모두 지원
메모리는 virtio balloon으로 탄력 관리되어 실제 사용량만 호스트에 할당됨
이식 가능한 단일 파일 패키징
VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성 가능
모든 의존성이 내장되어 설치 없이 즉시 실행 가능, 부팅 시간은 200ms 미만
불신 코드 샌드박싱
하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명을 완전히 분리
기본 네트워크는 비활성화 상태이며, --allow-host 옵션으로 특정 호스트만 허용 가능
지속형 개발용 VM
machine create, start, stop 명령으로 VM 생성 및 관리
설치된 패키지가 재시작 후에도 유지되어 개발 환경으로 활용 가능
SSH 에이전트 포워딩
호스트의 SSH 에이전트를 VM 내부로 전달하되, 개인키는 게스트로 복사되지 않음
--ssh-agent 옵션으로 호스트의 SSH 인증을 안전하게 활용 가능
Smolfile 기반 환경 선언
TOML 형식의 Smolfile로 VM 설정을 선언
이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정해 재현 가능한 환경 구성 가능
사용 예시
임시 VM 실행
smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"
종료 시 VM이 자동 정리되는 일회성 실행 방식
패키징된 실행 파일 생성
smolvm pack create --image python:3.12-alpine -o ./python312
생성된 실행 파일로 독립적인 Python 환경 실행 가능
네트워크 제어
기본 네트워크는 비활성화
--allow-host 옵션으로 특정 도메인만 접근 허용
SSH 및 Git 사용
smolvm machine run --ssh-agent --net --image alpine
호스트의 SSH 키를 안전하게 사용해 Git 리포지토리 접근 가능
내부 구조 및 동작 방식
각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널을 실행
libkrun 기반 VMM과 커스텀 커널(libkrunfw) 을 사용
OCI 이미지 포맷을 지원해 Docker Hub, ghcr.io 등에서 이미지를 직접 가져와 실행 가능
Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
기본 설정은 4 vCPU, 8GiB RAM, --cpus, --mem 옵션으로 조정 가능
vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전되어 과할당 비용이 거의 없음
비교
항목
smolvm
Containers
Colima
QEMU
Firecracker
Kata
격리 수준
워크로드별 VM
네임스페이스(공유 커널)
네임스페이스(단일 VM)
개별 VM
개별 VM
컨테이너별 VM
부팅 시간
<200ms
약 100ms
수 초
15~30초
<125ms
약 500ms
아키텍처
라이브러리(libkrun)
데몬
VM 내 데몬
프로세스
프로세스
런타임 스택
워크로드별 VM
지원
미지원
공유
지원
지원
지원
macOS 네이티브
지원
Docker VM 경유
krunkit 기반
지원
미지원
미지원
SDK 내장
지원
미지원
미지원
미지원
미지원
미지원
이식 가능한 아티팩트
.smolmachine
데몬 필요 이미지
미지원
미지원
미지원
미지원
플랫폼 지원
호스트
게스트
요구사항
macOS Apple Silicon
arm64 Linux
macOS 11 이상
macOS Intel
x86_64 Linux
macOS 11 이상 (테스트 미완료)
Linux x86_64
x86_64 Linux
KVM(/dev/kvm) 필요
Linux aarch64
aarch64 Linux
KVM(/dev/kvm) 필요
알려진 제한 사항
네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
TCP/UDP만 지원, ICMP 미지원
볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능
--ssh-agent 사용 시 호스트에 SSH 에이전트가 실행 중이어야 함 (SSH_AUTH_SOCK 설정 필요)
개발 관련
개발 지침은 docs/DEVELOPMENT.md에서 확인 가능
Apache-2.0 라이선스로 공개되어 있으며, @binsquare가 제작
서브초(1초 미만) 콜드스타트, 탄력적 메모리 관리, 단일 파일 이식성을 지원해 빠르고 가벼운 VM 실행 가능
VM은 리눅스 커널 기반 마이크로VM 형태로 구동되며, .smolmachine 파일로 패키징해 의존성 없이 재실행 가능
하이퍼바이저 경계 격리, SSH 에이전트 포워딩, Smolfile 기반 환경 선언 등으로 개발·보안 환경을 통합 지원
Docker 데몬 없이 OCI 이미지 부팅을 지원하며, 200ms 미만 부팅 시간과 하드웨어 수준 격리로 경량 가상화 대안 제시
개요
smolvm은 격리된 환경에서 소프트웨어를 실행하기 위한 CLI 기반 가상머신 관리 도구
macOS와 Linux에서 동작하며, 서브초 콜드스타트, 탄력적 메모리 사용, 이식 가능한 단일 파일 패키징을 지원
각 워크로드는 리눅스 커널 기반 마이크로VM으로 실행되며, 하드웨어 수준의 격리를 제공
.smolmachine 파일로 패키징된 VM은 동일 아키텍처의 플랫폼에서 의존성 없이 재실행 가능
주요 기능
로컬 가상머신 관리 및 실행
smolvm machine run 명령으로 커스텀 리눅스 VM 실행
콜드스타트는 1초 미만이며, macOS와 Linux 모두 지원
메모리는 virtio balloon으로 탄력 관리되어 실제 사용량만 호스트에 할당됨
이식 가능한 단일 파일 패키징
VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성 가능
모든 의존성이 내장되어 설치 없이 즉시 실행 가능, 부팅 시간은 200ms 미만
불신 코드 샌드박싱
하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명을 완전히 분리
기본 네트워크는 비활성화 상태이며, --allow-host 옵션으로 특정 호스트만 허용 가능
지속형 개발용 VM
machine create, start, stop 명령으로 VM 생성 및 관리
설치된 패키지가 재시작 후에도 유지되어 개발 환경으로 활용 가능
SSH 에이전트 포워딩
호스트의 SSH 에이전트를 VM 내부로 전달하되, 개인키는 게스트로 복사되지 않음
--ssh-agent 옵션으로 호스트의 SSH 인증을 안전하게 활용 가능
Smolfile 기반 환경 선언
TOML 형식의 Smolfile로 VM 설정을 선언
이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정해 재현 가능한 환경 구성 가능
사용 예시
임시 VM 실행
smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"
종료 시 VM이 자동 정리되는 일회성 실행 방식
패키징된 실행 파일 생성
smolvm pack create --image python:3.12-alpine -o ./python312
생성된 실행 파일로 독립적인 Python 환경 실행 가능
네트워크 제어
기본 네트워크는 비활성화
--allow-host 옵션으로 특정 도메인만 접근 허용
SSH 및 Git 사용
smolvm machine run --ssh-agent --net --image alpine
호스트의 SSH 키를 안전하게 사용해 Git 리포지토리 접근 가능
내부 구조 및 동작 방식
각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널을 실행
libkrun 기반 VMM과 커스텀 커널(libkrunfw) 을 사용
OCI 이미지 포맷을 지원해 Docker Hub, ghcr.io 등에서 이미지를 직접 가져와 실행 가능
Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
기본 설정은 4 vCPU, 8GiB RAM, --cpus, --mem 옵션으로 조정 가능
vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전되어 과할당 비용이 거의 없음
비교
항목
smolvm
Containers
Colima
QEMU
Firecracker
Kata
격리 수준
워크로드별 VM
네임스페이스(공유 커널)
네임스페이스(단일 VM)
개별 VM
개별 VM
컨테이너별 VM
부팅 시간
<200ms
약 100ms
수 초
15~30초
<125ms
약 500ms
아키텍처
라이브러리(libkrun)
데몬
VM 내 데몬
프로세스
프로세스
런타임 스택
워크로드별 VM
지원
미지원
공유
지원
지원
지원
macOS 네이티브
지원
Docker VM 경유
krunkit 기반
지원
미지원
미지원
SDK 내장
지원
미지원
미지원
미지원
미지원
미지원
이식 가능한 아티팩트
.smolmachine
데몬 필요 이미지
미지원
미지원
미지원
미지원
플랫폼 지원
호스트
게스트
요구사항
macOS Apple Silicon
arm64 Linux
macOS 11 이상
macOS Intel
x86_64 Linux
macOS 11 이상 (테스트 미완료)
Linux x86_64
x86_64 Linux
KVM(/dev/kvm) 필요
Linux aarch64
aarch64 Linux
KVM(/dev/kvm) 필요
알려진 제한 사항
네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
TCP/UDP만 지원, ICMP 미지원
볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능
--ssh-agent 사용 시 호스트에 SSH 에이전트가 실행 중이어야 함 (SSH_AUTH_SOCK 설정 필요)
개발 관련
개발 지침은 docs/DEVELOPMENT.md에서 확인 가능
Apache-2.0 라이선스로 공개되어 있으며, @binsquare가 제작


댓글 (0)
댓글을 불러오는 중...