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、从 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 内核。因此,内核权限提升漏洞可能导致逃逸。它旨在用于用户拥有爆炸半径的工作负载(例如,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