1.5MB 的容器运行时,没有 daemon:Kern 想把容器变成库
1.5MB 的容器运行时,没有 daemon:Kern 想把容器变成库
你的服务器上跑着 containerd 和 runc,加起来几十 MB,还有个 daemon 24 小时驻留。为了偶尔跑一个隔离任务,你养着一个"酒店前台"。
Kern 不这么干。它把整个容器和资源运行时塞进一个 1.5MB 的二进制,没有常驻 daemon。任务跑完,进程退出,什么都不留。
1.5MB 是什么概念
containerd 加 runc,装到你机器上是几十 MB 的动静,还要一个 daemon 在后台盯着。Kern 的 1.5MB 意味着三件事:
- 能塞进 initramfs,开机阶段就能用
- 能当库嵌进你的 Go 或 Rust 程序
- CI 里跑隔离任务,不用先起一个容器服务
对资源敏感的场景,这是实打实的差别,不是营销数字。
没有 daemon,容器谁管
传统模型:daemon 常驻,接收请求,管理容器生命周期。Kern 的模型反过来:容器生命周期直接由调用它的那个进程管理。调用方负责拉起,用完退出,没有后台进程残留。
类比一下:daemon 像酒店前台,24 小时有人值班,你凌晨三点也能办入住;Kern 像自助入住机,办完事就走,不留人,不耗电。
这不是新玩法,是十年的必然
十年前 Docker 用"一个 daemon 管所有"把容器从 LXC 的复杂配置里救出来。后来 runc 从 Docker 里拆出来,责任变小,反而到处都能嵌。
Kern 是同一逻辑的延续:运行时从"系统服务"往"库"走。Serverless、边缘计算、FaaS——这些场景本来就不想养 daemon,只想调个函数。
别急着换,坑还不少
先说清楚:Kern 现在只是 Show HN 阶段,不是生产级项目。
- cgroup 和 seccomp 支持到什么程度,文档还没写全
- 网络方案是什么,没说清楚
- 没有 daemon,边界情况都得你自己处理——容器退出时的资源回收,是你的责任
省下的 1.5MB,是用你处理边界情况的时间换的。
今天可以做的事
别迁移。花半小时读它的源码结构,看无 daemon 模型怎么处理容器退出时的资源回收。如果你在做 Serverless 或边缘计算,把它加进 watch 列表——「运行时变成库」这条路上,它现在走得最靠前。
✨ 本文由 DeepSeek 生成初稿,Claude 审核润色。
参考来源: