Kern v0.7.0: 1.5 MB 二进制文件中的无守护进程、无根容器运行时

Kern v0.7.0 是一个无守护进程、无根的沙箱和虚拟资源运行时,旨在为工作负载(包括不可信和 AI 生成的代码)提供高性能隔离。它通过 OCI 镜像提供内核强制执行的容器,冷启动时间约为 3.5 ms,所有功能都包含在一个 1.52 MB 的单一静态二进制文件中。

高性能容器隔离

Kern 的核心价值主张是在启动延迟和资源占用方面具有极高的效率。通过消除守护进程,它消除了与传统容器引擎相关的后台开销。

  • 启动延迟: Kern 在 ~3.5 ms 内启动一个真实的 OCI 镜像,而 docker run 则需要 ~297 ms。
  • 资源占用: 该运行时是一个单一的 1.52 MB 静态二进制文件,在静止状态下内存占用为零。它唯一的 Rust 依赖是 libc
  • OCI 兼容性: 它支持标准的 OCI 镜像,包括 pull、从 Dockerfile buildcommitpushsave/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 内核。因此,内核权限提升漏洞可能导致逃逸。它旨在用于用户拥有爆炸半径的工作负载(例如,agent tool-calls、CI jobs),而不是用于在共享内核上运行陌生人恶意代码的多租户环境。

资源管理和配置文件

Kern 引入了资源配置文件 (resource profiles) 的概念,允许用户在 kern.toml 配置文件中定义可重用的 CPU、内存、磁盘和设备切片。

  • vcpu: 定义 CPU 和内存限制(例如,一个具有 1.5 个核心和 512 MiB RAM 的 "heavy" 配置文件)。
  • vdisk: 提供大小受限的暂存盘(无根模式下使用基于 RAM 的 tmpfs,特权模式下使用 ext4-on-loop)。
  • vgpio: 提供对设备节点的芯片级访问(例如,/dev/i2c-1)。

这些配置文件可以通过 kern run 附加到沙箱容器或裸进程,从而在不进行隔离的情况下应用资源限制。

开发者体验和集成

Kern 提供了一些工具,用于将容器化集成到开发工作流中:

  • Docker Compose 兼容性: Kern 可以直接读取 docker-compose.yml 文件。kern compose up 在没有守护进程或 Docker Desktop 的情况下运行堆栈,启动 Web 层约需 ~0.3 s(热启动)。
  • 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 ~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 从源码安装。发布二进制文件通过安装脚本进行校验和验证。

社区反馈

虽然该项目因其性能而受到好评,但 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