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 规范库)。

快速开始

  1. 依赖:Rust(edition 2024)、Linux Kernel ≥ 5.3,以及 libseccomp、systemd 等开发库。

  2. 构建:

    1
    2
    3
    4
    git clone https://github.com/youki-dev/youki.git
    cd youki
    just youki-dev # 或 youki-release
    ./youki -h
  3. 简单使用示例(创建并运行容器):

    • 用 Docker 导出 rootfs → 生成 config.json → youki create / start / delete。
    • 也可直接作为 Docker 的 runtime:dockerd --add-runtime="youki=..."