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、從 Dockerfilebuild、commit、push以及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