Kern v0.7.0: 1.5 MB のバイナリに収まる、デーモンレスかつルートレスなコンテナランタイム

Kern v0.7.0 は、信頼できないコードや AI 生成コードを含むワークロードの高パフォーマンスな隔離を実現するために設計された、デーモンレスかつルートレスなサンドボックスおよび仮想リソースランタイムです。1.52 MB の単一の静的バイナリに収められ、OCI イメージから約 3.5 ms でコールドスタートする、カーネル強制のコンテナを提供します。

高パフォーマンスなコンテナ隔離

Kern の主な価値提案は、起動レイテンシとリソースフットプリントの極端な効率性です。デーモンを排除することで、従来のコンテナエンジンに関連するバックグラウンドのオーバーヘッドを解消します。

  • Startup Latency: Kern は、docker run の約 297 ms と比較して、実際の OCI イメージを約 3.5 ms で起動します。
  • Resource Footprint: ランタイムは単一の 1.52 MB の静的バイナリであり、待機時の RAM 使用量はゼロです。唯一の Rust 依存関係は libc です。
  • OCI Compatibility: 標準的な OCI イメージをサポートしており、pullbuild (Dockerfile から)、commitpush、および save/load が可能です。

サンドボックスとセキュリティモデル

Kern は、Linux カーネルの名前空間 (User, PID, Mount, Network, UTS, および IPC) とリソース制限のための cgroup v2 を活用するルートレスなサンドボックスです。

セキュリティプロファイル

Kern の主要な機能の一つは、--security-profile untrusted フラグであり、これは強化されたセキュリティ設定のバンドルを適用します:

  • Seccomp Allowlist: デフォルト拒否型の seccomp フィルタ (Moby のデフォルトに基づき、35 個のエスケープ用 syscall を除外したもの)。
  • Capability Drop: すべての危険な capability がドロップされます (--cap-drop ALL)。
  • Read-Only Root: ルートファイルシステムはデフォルトで読み取り専用です。
  • Network Isolation: 明示的に要求されない限り、ネットワークアクセスは無効化されます。

スレットモデル

Kern はハイパーバイザではありません。境界は Linux カーネルです。したがって、カーネルの権限昇格のバグは、潜在的なエスケープ(脱出)につながります。これは、ユーザーが爆発半径 (blast radius) を管理できるワークロード (例:エージェントのツール呼び出し、CI ジョブ) 用に設計されており、見知らぬ人からの悪意のあるコードを共有カーネル上で実行するマルチテナント環境用ではありません。

リソース管理とプロファイル

Kern はリソースプロファイルという概念を導入しており、ユーザーが kern.toml 設定ファイル内で CPU、メモリ、ディスク、およびデバイスの再利用可能なスライスを定義できるようにします。

  • vcpu: CPU とメモリの制限を定義します (例:「heavy」プロファイルは 1.5 コアと 512 MiB RAM)。
  • vdisk: サイズ制限付きのスクラッチディスクを提供します (ルートレスモードでは RAM ベースの tmpfs、特権モードでは ext4-on-loop)。
  • vgpio: デバイスノードへのチップ粒度のアクセスを提供します (例:/dev/i2c-1)。

これらのプロファイルは、kern run を使用して、サンドボックス化されたボックスまたは生のプロセスにアタッチして、隔離なしでリソースキャップを適用できます。

開発者体験と統合

Kern は、コンテナ化を開発ワークフローに統合するためのいくつかのツールを提供します:

  • Docker Compose Compatibility: 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) 上で動作します。非特権ユーザー名前空間と 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