返回

文章详情

展示 HN: Kern - 一个 1.5 MB 二进制文件中的容器和资源运行时,无守护进程

Hacker News2026年8月24日 18:24

kern: 一个快速、无根沙箱和虚拟资源运行时,适用于任何工作负载,包括不受信任和 AI 生成的代码。一个真实的、内核强制的容器,在约 3.5 毫秒内启动,来自一个 1.52 MB 的二进制文件,无守护进程。0 空闲内存 · 无守护进程,无套接字,无需启动 · 一个静态二进制文件,libc 是它唯一的 Rust 依赖。 # 安装发布二进制文件(静态,1.52 MB,脚本已验证校验和) curl -fsSL https://raw.githubusercontent.com/getkern/kern/main/install.sh | sh # 在实际的 OCI 镜像中创建一个一次性 shell:无根、内核强制、几毫秒 kern box dev --image alpine -it -- sh 无本地 Windows:使用 WSL2. 安装。什么是 kern 一个管理资源的二进制文件,其中隔离是首要任务。这就是为什么在比较表中没有单独的一行可以描述 kern:它是一个容器运行时、一个沙箱、一个资源切割器和一个堆栈运行器,都是在 1.52 MB 的空间内且没有守护进程。一个真实的容器。真实的 OCI 镜像:拉取、从 Dockerfile 构建、提交、推送、保存/加载。来自镜像的一个 box 启动时间约为 3.5 毫秒。一个沙箱,始终无根。用户、PID、挂载、网络、UTS 和 IPC 命名空间,一个覆盖或只读根已转移,默认拒绝 seccomp 允许列表和 cgroup v2 限制。一个标志,--security-profile untrusted,就是整个强化包。资源配置文件,而不仅仅是隔离。CPU(vcpu:)、内存、磁盘(vdisk:)和设备(vgpio:),在 kern.toml 中声明一次并按名称附加。kern run 将相同的能力应用于主机上的进程,根本没有沙箱。docs/RESOURCES.md 堆栈,采用 kern 自身的格式或 Docker 的格式。kern compose <file> up 采用 kern-compose.toml([box.NAME] 表,包含上述资源配置文件)或您已有的 docker-compose.yml,按原样读取。一堆栈到一个 pod,服务通过名称相互访问。它们周围的工具。ps、日志、exec、stats、inspect、wait、top(实时 TUI)、doctor,以及 Python 和 Node SDK 以及用于代理的 MCP 服务器。它的整个 Rust 依赖树是 libc:JSON 和 OCI 清单是手动解析的,而不是链接 TLS 堆栈,而是将 shell 拉出已经在机器上的 curl 和 tar。(1.52 MB 是经过大小优化的发布版本;从源代码进行普通 cargo 安装为 1.91 MB。) kern 不是什么 不是一个虚拟机监控程序。边界是 Linux 内核,因此内核特权提升漏洞是一次逃逸。Docker 和 Podman 也存在这种条件,这就是为什么会有 gVisor 和 Firecracker 的原因。阅读这个标语,即从两侧看到的一行:不受信任和 AI 生成的代码是 kern 的用途,因为你选择运行它并掌控影响范围(代理工具调用、CI 作业、构建步骤、代码单元)。它不适用于来自陌生人的恶意代码、多租户环境,或在从其他租户提供服务的内核上运行的代码。kern 始终以无根方式启动,而 Docker 是选择加入。并不摆脱 userns 交易。它的隔离是建立在无特权用户命名空间的基础上,这是内核 LPE 漏洞的滋生地。SECURITY.md 在任何声明之前已经说明了这一点。不是围绕您挂载的内容构筑的墙。-v $HOME:/host 将您的主目录给 box:挂载是您作出的信任决定,而不是 kern 强制的边界。--net host 和 --privileged 是选择退出的命名选项。(kern 拒绝绑定的唯一路径是它自己的运行时注册表。)不是 Docker 引擎的重实现。它使用 Docker 的格式,而不是其 API:没有覆盖网络,没有插件,没有 Swarm。矩阵:docs/DOCKER-COMPAT.md。不是一个 Kubernetes 运行时。没有 CRI。使用 containerd 或 CRI-O。没有提供 GPU 切片。在路线图上,目前版本没有 GPU 代码,因此这里没有值得信任或攻击的内容。它尚未知晓的或未做的事情在 OPEN_ITEMS.md 中,而不是留给您去发现。安装 kern 需要一个带有无特权用户命名空间和 cgroup v2 的 Linux 内核。它可在 Linux、WSL2 和 ARM 板上运行(Raspberry Pi·Jetson·Arduino UNO Q);没有本地 Windows 构建,请使用 WSL2(kern 提供预构建的 WSL rootfs)。最快的方式是发布的二进制文件:一个静态文件,无需工具链,脚本在安装之前验证其 SHA256。curl -fsSL https://raw.githubusercontent.com/getkern/kern/main/install.sh | sh 它为您选择 x86_64 或 aarch64,安装到 ~/.local/bin(作为 root 到 /usr/local/bin,或 KERN_INSTALL_DIR),并拒绝安装校验和不匹配的下载。手动验证则是两行: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),因此很短:克隆、构建和安装在桌面(i7-14700KF)上需要 36 秒,在小型 ARM 板上则更长。 # 如果您尚未安装 Rust curl --proto ' =https ' --tlsv1.2 -sSf https://sh.rustup.rs | sh cargo install --git https://github.com/getkern/kern getkern --locked 这将把 kern 放在 ~/.cargo/bin 中,rustup 将其添加到您的 PATH(打开)

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡