
2026/08/25 3:24
Show HN: Kern – デーモン不要で 1.5MB のバイナリのみで動作するコンテナおよびリソースランタイム
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Kern は、Rust で記述された Linux 用高性能な rootless サンドボックス実行環境です。永続的なデーモンを備えず、単一の約 1.52 MB の静的バイナリとして提供されます。ユーザーネームスペース、cgroup v2、seccomp(deny-by-default)、ドロップされたカプエビリティ、pivot_root を含むネイティブカーネル機能を用いて隔離を強制し、OCI イメージからの冷たい開始で約 3.5 ms、bare box からの場合は約 2.3 ms というほぼ瞬時の起動を実現するとともに、アイドル時における占有メモリはゼロです。Kern は Docker Compose ファイルを直接読み取り、
kern.toml プロファイルを通じてリソースを管理し、ps, logs, stats, stop, exec, wait, top, doctor のような管理ツールを提供します。ベンチマークでは、従来のコンテナソリューションよりも足跡と起動速度において優位に立ちながら、並列で約 200 つの隔離済み環境を 0.11 秒以内での起動を実現しています。Firecracker や gVisor(カーネル強制レイヤー)のようなハイパーバイザーや仮想化オーバーヘッドを回避する一方で、ユーザーネームスペースのトレードオフを理解することをユーザーに求めます。Python と Node 向けの実装者 SDK を含まれ、AI エージェント統合用の MCP サーバーも用意されており、GPU スライシングは計画されています。Kern は Linux、WSL2、ARM ボード(例:Raspberry Pi)で動作しますが、Windows 向けネイティブビルドはありません。バージョン 0.7.0 には、対立シミュレーションペントストスイート、GPG 署名付きリリースでの起源検証、オープンな脅威モデリングが含まれています。究極的には、Kern はレガシーインフラストラクチャのオーバーヘッドを持たず、マイクロサービス、不信頼コードの実行、および隔離されたコンピューティングニーズのための軽量で安全な基盤を提供します。本文
kern: 高速で軽量な Rootless サンドボックス・ランタイム
kern は、信頼できないコードや AI が生成したコードを含むあらゆるワークロードに対応するため、高速な rootless(システム管理者権限なし) サンドボックスおよび仮想リソースランタイムです。
実在のカーネル強制コンテナとして動作し、以下の特性を持っています。
- 1.52 MB の単一バイナリのみで構成
- デーモンプロセス不要(デモーンレス)での起動
- 約 3.5 ms という超高速な稼働開始
主要な特長
- RAM 使用量: リスト状態(非実行時)での RAM 使用量は 0。
- 依存関係: デーモン不要、ソケットなし、起動不要の仕組み。
- 構成: 単一の静的バイナリのみ。libc が唯一の Rust 依存ライブラリです。
インストール(リリースバイナリ)
チェックサム検証付きの静的バイナリ(1.52 MB)をインストールします。
curl -fsSL https://raw.githubusercontent.com/getkern/kern/main/install.sh | sh
手動での検証方法
ダウンロードしたファイルのチェックサスマッチは以下のコマンドで確認できます:
curl -fsSLO https://github.com/getkern/kern/releases/latest/download/kern-x86_64-unknown-linux-musl.tar.gz{,.sha256} sha256sum -c kern-x86_64-unknown-linux-musl.tar.gz.sha256 && tar xzf kern-x86_64-unknown-linux-musl.tar.gz
ソースコードからインストール
依存関係は単一の Crate(libc)のみです。Rust がインストールされていない場合は、以下の手順でセットアップします。
# Rust のインストール curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # ビルドとインストール cargo install --git https://github.com/getkern/kern getkern --locked
※インストール先は
~/.cargo/bin です。
基本コマンドと機能
使い捨てシェルの起動(本物の OCI イメージ内)
rootless で、カーネル強制、数ミリ秒での起動です。
注意: ネイティブ Windows での動作は対応していません。WSL2(Windows Subsystem for Linux 2)のご使用を推奨します。
kern box dev --image alpine -it -- sh
リソースプロファイルの適用
~/.config/kern/kern.toml で一度宣言したスライス(リソース割り当て)を、名前を指定してアタッチできます。
プロファイル定義例 (kern.toml
)
kern.toml[[cpu]] id = "cpu:0" cores = 8.0 [[vcpu]] name = "heavy" backend = "cpu:0" cpus = 1.5 memory = "512m" [[vgpio]] name = "sensor" backend = "gpio:0" i2c = ["/dev/i2c-1"]
プロファイルを使用した実行
kern box train --image alpine vcpu:heavy vdisk:scratch -- ./train.sh kern run vcpu:heavy -- ./train.sh # サンドボックスなしでの実行
使用方法の多様性
Docker Compose スタックを動作させる
kern は
docker-compose.yml をそのまま読み込みます。Docker Desktop やデーモンは不要です。
# compose.yaml - 変更なしで利用可能 services: db: image: postgres:alpine environment: { POSTGRES_PASSWORD: secret, POSTGRES_DB: app } web: image: adminer ports: ["8080:8080"] depends_on: [db]
kern compose compose.yaml up
サービスの管理例
: 実行中のプロセスを表示(PORTS と HEALTH が付与)。kern ps
: シェルから実行中に入ります。kern exec svc -it -- sh
: 信号を送信し、grace period を適用して終了します。kern stop svc
: ライブ TUI でボックス、CPU/RAM、プロファイルを確認できます。kern top
Docker Compose スタックの起動・停止
kern compose stack.toml up # マルチボックスタックや compose.yml の起動 kern compose stack.toml down # 停止
非信頼コードへの対応(セキュリティプロファイル)
信頼できないコード(AI 生成、CI ジョブなど)を実行する場合は、単一のフラグで強化された環境を適用できます。
kern box job --image python:3.12-slim \ --security-profile untrusted \ --memory 256m \ -v ./job:/w -- python3 /w/x.py
の効果:--security-profile untrusted
- seccomp アラウリスト: システムコールの制限強化。
: すべてのカーネル能力をドロップ。--cap-drop ALL
: リーディオンルートファイルシステムの強制。--read-only- ネットワーク/権限: リクエストしない限りオフ、危険な権限はすべて削除。
※より厳格に起動を確認したい場合は
--require-limits を追加できます。
埋め込み機能:Python & Node.js SDK (kern-sandbox
)
kern-sandbox自らのプログラムからエージェントまたは LLM が生成したコードを実行する際に使用します。呼び出しは新しい孤立したボックスの中で実行されます(ネットワークオフ、制限あり)。
pip install kern-sandbox # PyPI npm install kern-sandbox # npm
Python 例
from kern_sandbox import run_code r = run_code("import platform; print(platform.python_version())") print(r.stdout) # 新しいボックスで実行 # r.fault にはタイムアウト/OOM/ブロック結果が格納される
MCP サーバー (kern-mcp
)
kern-mcp任意の MCP クライアント(Claude Desktop、Cursor など)にローカルなコードインタープリタを提供します。 設定例:
{ "mcpServers": { "kern": { "command": "kern-mcp" } } }
利用可能なツール:
run_code, write_file, read_file, list_files(各呼び出しはネットワークオフの新しいボックス)。
埋め込みとリッチな出力
- Jupyter カーネルなし: 最後の式、
、matplotlib グラフをノートブックセルのようにキャプチャ可能。display() - JSON レスポンス: すべての読み取り動詞が JSON で返すため、手動でのパース不要。
kern ps --json | jq '.[] | select(.health == "unhealthy") | .name' kern volume ls --json
機能の制限と非対応事項(重要)
kern は以下を実現するものではありません:
- ハイパーバイザーではない: 境界は Linux カーネルそのものです。カーネル LPE(ローカル特権エスカレーション)バグがある場合、脱出(エスケープ)の可能性があり、gVisor や Firecracker のような完全な隔離は提供しません。
- Docker Engine の実装ではありません: API には対応せず(オーバーレイネットワーク、プラグイン、Swarm なし)、CRI(Container Runtime Interface)がありません。
- Kubernetes ランタイムではない: containerd または CRI-O を使用してください。
- GPU スライスは未実装: ロードマップにありますが、現在のリリースではサポートされていません。
- マウント内容への制限はない: 信頼判断はユーザー自身です。kern はランタイムレジストリへのパスのみバインド拒否します。
注意: 対応していない機能や未実装の項目については
を参照してください。これはユーザーに発見させるためのものではありません。OPEN_ITEMS.md
パフォーマンスとベンチマーク(比較)
| メトリック | kern | bubblewrap | runc | podman | docker |
|---|---|---|---|---|---|
| 起動時間 (裸のボックスキープ) | ~2.3 ms | ~2.3 ms | ~18.6 ms | ~293 ms | ~297 ms |
| 起動時間 (OCI イメージ) | ~3.5 ms | なし | なし | ~293 ms | ~297 ms |
| 居住メモリー (非実行時) | 0 | 154〜160 MB | なし | 0 | なし |
| フットプリント | 1.52 MB バイナリ | なし | なし | マルチバイナリ | デーモンスタック |
並列起動能力(Intel i7-14700KF, Linux)
- kern: 200 ボックス同時起動で 約 0.11 s、3000 台同時起動で 約 2.2 s。
- Docker/Podman と比較して劇的に高速です(エンジン負荷なし)。
補足: 単一ショットのレイテンシを完全に優越するわけではありません。unshare + exec の床は 1〜2 ms です。しかし、並列起動や継続稼働において、デモーンがないことが大きなメリットとなります。
セキュリティ詳細
kern は以下の防御策を組み合わせています:
- ネームスペース: 標準的な Linux ネームスペースと pivot_root を使用。
- 権限制御: 危険な権限 16 を削除(exec 前)。
- seccomp: 常に有効なアラウリスト(moby デフォルトから 35 つのエスケープコールを除外)。システムコールは
で返します。ENOSYS - cgroup v2 リミット:
フラグ付きでの起動拒否。--require-limits
のデフォルト拒否。/dev
信頼だけで安心せず、自己テストも推奨されます。pentest スイートは
配下にあり、ローカルレジストリなしで実行可能です。pentest/
脆弱性報告は GitHub Security Advisories または
hello@getkern.dev へ。詳細は SECURITY.md を参照してください。
ドキュメントとリソース
| リンク | 説明 |
|---|---|
| Linux、WSL2、ARM ボードでのインストール手順 |
| Docker 互換性に関する詳細(対応/非対応機能) |
| リソースプロファイル(CPU、メモリ、ディスク)のスキーマ |
| 脅威モデルとセキュリティメカニズムの説明 |
| 測定値とベンチマーク結果 |
| 90 の実行可能スクリプト例 |
ステータス
- バージョン: v0.7.0(最初の公式リリース)
- テスト: 840 つの Rust テスト、78 つの Python テスト、61 つの Node テストがクリア済み。
- プラットフォーム: Linux、WSL2、Raspberry Pi、Jetson Orin Nano、Arduino UNO Q で動作確認済み。
- 開発: CLI および設定ファイルは継続的に改善中です(
を参照)。CHANGELOG.md
貢献とライセンス
- ライセンス: Apache-2.0(
を参照)。LICENSE - コントリビューション: Issue や PR を歓迎します(
を参照)。CLA は必須です。CONTRIBUTING.md - メンテナ: Alex @realexhub(コミットは
で署名済み、リリース TAG は GPG 署名あり)。@getkerndev