oci制youki(rust编写)
youki 是一个用 Rust 编写的 OCI(Open Container Initiative)容器运行时。
youki名称由来
“youki” 发音为 /joʊki/(约 “Yoh-key”),取自日语“容器”(容器)的意思,同时在日语中也有“愉快、欢快”的含义。
为什么用 Rust 写?
主要动机包括:
- Rust 在处理系统调用(如 namespaces、fork)时比 Go 更自然,同时比 C 更安全(内存安全)。
- 相比 runc,youki 有潜力更快、内存占用更低,适合内存受限的环境。
- 简单基准测试显示,从创建到删除容器的时间:youki 约 111.5 ms,runc 约 224.6 ms(具体数值随版本和环境有所变化)。
主要特性与状态
- 完整实现 OCI runtime-spec。
- 支持 rootful 和 rootless(非 root 用户)模式。
- 已通过 containerd 的 e2e 测试,并被多个生产环境采用。
- 可与 Docker、Podman、containerd、Kubernetes 等上层运行时配合使用。
- 相关项目:oci-spec-rs(Rust 实现的 OCI 规范库)。
快速开始
依赖:Rust(edition 2024)、Linux Kernel ≥ 5.3,以及
libseccomp、systemd等开发库。构建:
1
2
3
4git clone https://github.com/youki-dev/youki.git
cd youki
just youki-dev # 或 youki-release
./youki -h简单使用示例(创建并运行容器):
- 用 Docker 导出 rootfs → 生成
config.json→youki create/start/delete。 - 也可直接作为 Docker 的 runtime:
dockerd --add-runtime="youki=..."
- 用 Docker 导出 rootfs → 生成