Kern v0.7.0: 1.5 MB 二進位檔中的無守護進程、無根權限容器執行環境

Kern v0.7.0 是一個無守護進程 (daemonless)、無根權限 (rootless) 的沙盒與虛擬資源執行環境,旨在為工作負載(包括不可信與 AI 生成的程式碼)提供高效能的隔離。它能從 OCI 映像檔提供由核心強制執行的容器,冷啟動時間約為 3.5 ms,且全部包含在單一 1.52 MB 的靜態二進位檔中。

高效能容器隔離

Kern 的主要價值主張在於啟動延遲與資源佔用的極致效率。透過消除守護進程,它移除了與傳統容器引擎相關的背景開銷。

  • 啟動延遲: Kern 在 ~3.5 ms 內啟動一個真實的 OCI 映像檔,相比之下 docker run 約需 ~297 ms。
  • 資源佔用: 該執行環境是一個單一 1.52 MB 的靜態二進位檔,閒置時零 RAM 使用量。其唯一的 Rust 依賴是 libc
  • OCI 相容性: 它支援標準 OCI 映像檔,包括 pull、從 Dockerfile buildcommitpush 以及 save/load 的能力。

沙盒與安全模型

Kern 是一個無根權限的沙盒,利用 Linux 核心命名空間 (User, PID, Mount, Network, UTS, 和 IPC) 以及 cgroup v2 來進行資源限制。

安全設定檔

Kern 的關鍵功能之一是 --security-profile untrusted 旗標,它會套用一組強化的安全設定:

  • Seccomp 白名單: 一個預設拒絕的 seccomp 過濾器(基於 Moby 的預設值,但減去了 35 個逃逸系統呼叫)。
  • 權限捨棄 (Capability Drop): 所有危險的權限都會被捨棄 (--cap-drop ALL)。
  • 唯讀根目錄: 根檔案系統預設為唯讀。
  • 網路隔離: 除非明確要求,否則禁用網路存取。

威脅模型

Kern 不是虛擬機器監視器 (hypervisor);其邊界是 Linux 核心。因此,核心權限提升漏洞可能導致逃逸。它旨在用於使用者擁有爆炸半徑 (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 內啟動 Web 層(熱啟動)。
  • SDKs 用於 AI 代理: 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 ~3.5 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 從原始碼安裝。發行版二進位檔會由安裝腳本進行校驗和 (checksum) 驗證。

社群回饋

雖然該專案因其效能而受到好評,但 Hacker News 社群中的一些使用者指出,它並非 CRI (Container Runtime Interface) 實作,這意味著它不能直接替換 Kubernetes 執行環境(如 containerd 或 CRI-O)。

"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