Kern v0.7.0: 1.5 MB 바이너리에 담긴 데몬리스, 루트리스 컨테이너 런타임
Kern v0.7.0은 신뢰할 수 없는 코드 및 AI 생성 코드를 포함한 워크로드의 고성능 격리를 위해 설계된 데몬리스, 루트리스 샌드박스 및 가상 리소스 런타임입니다. 단일 1.52 MB 정적 바이너리에 포함되어 있으며, OCI 이미지로부터 약 3.5 ms의 콜드 스타트 시간을 갖는 커널 강제 컨테이너를 제공합니다.
고성능 컨테이너 격리
Kern의 주요 가치 제안은 시작 지연 시간과 리소스 사용량 측면에서의 극단적인 효율성입니다. 데몬을 제거함으로써 전통적인 컨테이너 엔진과 관련된 백그라운드 오버헤드를 제거합니다.
- 시작 지연 시간: Kern은
docker run의 약 ~297 ms와 비교하여 실제 OCI 이미지를 ~3.5 ms 만에 시작합니다. - 리소스 사용량: 런타임은 대기 상태에서 RAM 사용량이 0인 단일 1.52 MB 정적 바이너리입니다. 유일한 Rust 의존성은
libc입니다. - OCI 호환성:
pull,build(Dockerfile로부터),commit,push,save/load기능을 포함하여 표준 OCI 이미지를 지원합니다.
샌드박스 및 보안 모델
Kern은 Linux 커널 네임스페이스(User, PID, Mount, Network, UTS, 및 IPC)와 리소스 제한을 위한 cgroup v2를 활용하는 루트리스 샌드박스입니다.
보안 프로필
Kern의 핵심 기능 중 하나는 --security-profile untrusted 플래그로, 이는 강화된 보안 설정 번들을 적용합니다:
- Seccomp 허용 목록: 기본 거부 방식의 seccomp 필터(Moby의 기본값에서 35개의 탈출 syscall을 제외한 것).
- Capability Drop: 모든 위험한 capability가 제거됩니다 (
--cap-drop ALL). - Read-Only Root: 루트 파일시스템은 기본적으로 읽기 전용입니다.
- Network Isolation: 명시적으로 요청하지 않는 한 네트워크 액세스가 비활성화됩니다.
위협 모델
Kern은 하이퍼바이저가 아닙니다. 경계는 Linux 커널입니다. 결과적으로, 커널 권한 상승 버그는 잠재적인 탈출 경로가 될 수 있습니다. Kern은 낯선 사람의 적대적인 코드가 공유 커널에서 실행되는 멀티테넌트 환경이 아니라, 사용자가 폭발 반경(blast radius)을 소유하는 워크로드(예: 에이전트 도구 호출, CI 작업)를 위해 설계되었습니다.
리소스 관리 및 프로필
Kern은 리소스 프로필 개념을 도입하여, 사용자가 kern.toml 설정 파일에서 CPU, 메모리, 디스크, 장치를 재사용 가능한 슬라이스로 정의할 수 있게 합니다.
- vcpu: CPU 및 메모리 제한을 정의합니다 (예: 1.5 코어와 512 MiB RAM을 갖는 "heavy" 프로필).
- vdisk: 크기 제한이 있는 스크래치 디스크를 제공합니다 (루트리스 모드에서는 RAM-backed tmpfs, 권한 있는 모드에서는 ext4-on-loop).
- vgpio: 장치 노드(예:
/dev/i2c-1)에 대한 칩 단위 액세스를 제공합니다.
이러한 프로필은 격리 없이 리소스 제한을 적용하기 위해 kern run을 사용하여 샌드박스 박스 또는 베어 프로세스에 연결할 수 있습니다.
개발자 경험 및 통합
Kern은 컨테이너화 기술을 개발 워크플로우에 통합하기 위한 여러 도구를 제공합니다:
- Docker Compose 호환성: Kern은
docker-compose.yml파일을 직접 읽을 수 있습니다.kern compose up은 데몬이나 Docker Desktop 없이 스택을 실행하며, 웹 티어를 약 ~0.3 s (warm) 만에 시작합니다. - SDKs for AI Agents:
kern-sandbox라이브러리는 Python 및 Node.js 바인딩을 제공합니다. 이를 통해 프로그램이 타임아웃 및 OOM-kill 탐지를 예외가 아닌 데이터로 처리하면서, 신선하고 격리된 박스에서 코드를 실행할 수 있게 합니다. - MCP Server: 의존성 없는 stdio 서버(
kern-mcp)를 통해 Claude Desktop이나 Cursor와 같은 AI 클라이언트가 Kern을 로컬 코드 인터프리터로 사용할 수 있게 합니다.
기술적 비교: Kern vs. Docker vs. Podman
| Feature | Kern | Docker | Podman |
|---|---|---|---|
| Daemon | No | Yes | No |
| Rootless | Always | Opt-in | Yes |
| Cold Start (Bare Box) | ~2.3 ms | ~297 ms | ~293 ms |
| Cold Start (OCI Image) | ~3.5 ms | ~297 ms | ~293 ms |
| Resident Memory (Idle) | 0 | 154-160 MB | 0 |
| Footprint | 1.52 MB Binary | Daemon Stack | Multi-binary Install |
| OCI Images | Yes | Yes | Yes |
| Docker Compose | Yes | Partial | Partial |
| Overlay Networks/CRI | No | Yes | Partial |
| GPU Support | Roadmap | Yes | Yes |
설치 및 플랫폼 지원
Kern은 Linux, WSL2, 및 ARM 보드(Raspberry Pi, Jetson, Arduino UNO Q)에서 실행됩니다. unprivileged user namespaces와 cgroup v2를 지원하는 Linux 커널이 필요합니다.
설치는 정적 릴리스 바이너리 또는 Cargo를 통한 소스 설치가 방식으로 가능합니다. 릴리스 바이너리는 설치 스크립트에 의해 체크섬 검증이 수행됩니다.
커뮤니티 피드백
프로젝트의 성능 면에서는 좋은 평가를 받고 있지만, Hacker News 커뮤니티의 일부 사용자들은 이것이 CRI (Container Runtime Interface) 구현체가 아니라는 점에 주목했습니다. 즉, containerd나 CRI-O와 같은 Kubernetes 런타임의 드롭인 교체품이 아니라는 의미입니다.
"the submission title was a little misleading as it says 'container ... runtime' right there, and I guess it is, but it is not a CRI implementation."
Sources
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch