Containerization
macOS에서 Linux 컨테이너를 실행할 수 있는 Swift 패키지
About
- Containerization은 macOS에서 Linux 컨테이너를 실행할 수 있게 해주는 Swift 기반 오픈소스 도구
- Apple Silicon 기반 Mac에서 작동하며, Virtualization.framework를 활용하여 가벼운 가상 머신 안에 각 컨테이너를 격리 실행함
- OCI 이미지 관리, 원격 레지스트리 연동, ext4 파일 시스템 생성, 컨테이너 환경 제어 등 다양한 기능을 포함함
- Rosetta 2를 활용해 Apple Silicon에서도 x86_64 프로세스 실행 지원 가능함
- 초단시간 부팅, 경량 환경 제공, 커널 버전 커스터마이징 등으로 개발자 유연성과 성능을 높임
프로젝트 개요
- Containerization은 애플리케이션이 Linux 컨테이너를 사용할 수 있도록 도와주는 Swift 패키지임
- Swift 언어로 구현되어 있으며, Apple Silicon 기반의 Mac에서 Virtualization.framework를 활용해 동작함
- API를 통해 아래와 같은 기능을 제공함
- OCI 이미지 관리
- 원격 컨테이너 레지스트리 연동
- ext4 파일 시스템 생성 및 배치
- Netlink 소켓 패밀리와의 상호작용
- 빠른 부팅을 위한 최적화된 Linux 커널 제공
- 경량 가상 머신 생성 및 관리
- 가상 머신의 실행 환경 제어
- 컨테이너화된 프로세스 생성 및 제어
- Rosetta 2를 활용한 Apple Silicon에서 x86_64 프로세스 실행
디자인 및 구조
- 각 Linux 컨테이너는 독립된 가상 머신 내에서 실행됨
- 컨테이너별 전용 IP 주소를 할당할 수 있어, 포트 포워딩 없이도 네트워크 관리가 간편함
- 최적화된 커널 설정과 경량 루트 파일 시스템 덕분에 1초 미만의 컨테이너 부팅이 가능함
- vminitd는 Containerization의 서브프로젝트로, 가상 머신 내에서 초기 프로세스로 동작하는 경량 init 시스템임
- GRPC API를 통해 실행 환경을 설정하고, 컨테이너 프로세스 운영 관리를 지원함
- 입출력, 시그널, 이벤트 처리를 호출한 프로세스에 전달함
요구사항
- Apple Silicon Mac 기기가 필요함
- 패키지 빌드를 위해서는
- macOS 15 이상 및 Xcode 26 Beta
- 또는 macOS 26 Beta 1 이상이 필요함
- 비격리 컨테이너 네트워킹: 같은 vmnet 네트워크 상의 컨테이너 간 통신 불가
사용 예시
- cctl 실행 파일 제공: API의 다양한 기능을 실험해볼 수 있는 playground 형태임
- 주요 명령 예시
- OCI 이미지 조작
- 컨테이너 레지스트리 로그인
- 루트 파일 시스템 블록 생성
- 간단한 Linux 컨테이너 실행
- 주요 명령 예시
Linux 커널 구성
- 컨테이너용 경량 가상 머신 실행을 위해 Linux 커널이 필요함
- Containerization에서 제공하는 최적화 커널 설정은 kernel 디렉터리에 위치함
- 해당 설정은 최소한의 기능만 담아 빠른 부팅과 경량 환경을 제공함
- 필요에 따라 컨테이너별 커널 설정과 버전을 다르게 지정할 수 있는 API가 마련됨
- 다양한 커널 버전 및 설정을 테스트 가능함
- 단, VIRTIO 드라이버가 커널에 내장(compiled-in)되어 있어야 함
개발 및 테스트 프로세스 요약
- Swift, Static Linux SDK 등 환경 준비 필요
- 소스 코드 빌드 및 테스트 가능 (make all, make test integration 명령어 등)
- 통합 테스트 실행을 위해 커널 이미지 필요
오픈소스 기여 및 프로젝트 현황
- 기여 환영
- 0.1.0 버전이 첫 공식 릴리스이며, 소스 안정성은 마이너 버전 범위 내에서만 보장됨
- 향후 마이너 릴리스에서 정책 변경 가능성 존재
요약
- Containerization은 macOS에서 개발자들이 최적화된 환경으로 Linux 컨테이너를 관리, 실행, 개발할 수 있게 해주는 혁신적인 Swift 패키지임
- 각 컨테이너를 가벼운 전용 가상 머신에서 구동함으로써 격리, 성능, 네트워킹, 커널 커스터마이징 장점을 제공함
- 오픈소스 컨테이너 환경을 macOS 네이티브 경험으로 확장하려는 개발자들에게 적합한 솔루션임