Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
Rust로 구현된 컨테이너 런타임
A container runtime written in Rust
개발 도구GitHub @youki-dev직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗youki is an implementation of the OCI runtime-spec in Rust, similar to runc.
Your ideas are welcome here.
youki is pronounced as /joʊki/ or yoh-key. youki is named after the Japanese word 'youki', which means 'a container'. In Japanese language, youki also means 'cheerful', 'merry', or 'hilarious'.
[!TIP] You can immediately set up your environment with youki on GitHub Codespaces and try it out.
just build docker run --runtime youki hello-world sudo podman run --cgroup-manager=cgroupfs --runtime /workspaces/youki/youki hello-world
Here is why we are writing a new container runtime in Rust.
Rust is one of the best languages to implement the oci-runtime spec. Many very nice container tools are currently written in Go. However, the container runtime requires the use of system calls, which requires a bit of special handling when implemented in Go. This is tricky (e.g. namespaces(7), fork(2)); with Rust too, but it's not that tricky. And, unlike in C, Rust provides the benefit of memory safety. While Rust is not yet a major player in the container field, it has the potential to contribute a lot: something this project attempts to exemplify.
youki has the potential to be faster and use less memory than runc, and therefore work in environments with tight memory usage requirements. Here is a simple benchmark of a container from creation to deletion.
| Runtime | Time (mean ± σ) | Range (min … max) | vs youki(mean) | Version |
|---|---|---|---|---|
| youki | 111.5 ms ± 11.6 ms | 84.0 ms ± 142.5 ms | 100% | 0.3.3 |
| runc | 224.6 ms ± 12.0 ms | 190.5 ms ± 255.4 ms | 200% | 1.1.7 |
| crun | 47.3 ms ± 2.8 ms | 42.4 ms ± 56.2 ms | 42% | 1.15 |
A command used for the benchmark
hyperfine --prepare 'sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' --warmup 10 --min-runs 100 'sudo ./youki create -b tutorial a && sudo ./youki start a && sudo ./youki delete -f a'
Environment
$ ./youki info
Version 0.3.3
Commit 4f3c8307
Kernel-Release 6.5.0-35-generic
Kernel-Version #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 7 09:00:52 UTC 2
Architecture x86_64
Operating System Ubuntu 22.04.4 LTS
Cores 16
Total Memory 63870
Cgroup setup unified
Cgroup mounts
Namespaces enabled
mount enabled
uts enabled
ipc enabled
user enabled
pid enabled
network enabled
cgroup enabled
Capabilities
CAP_BPF available
CAP_PERFMON available
CAP_CHECKPOINT_RESTORE available
I have fun implementing this. In fact, this may be the most important.
youki has aced real-world use cases, including containerd's e2e test, and is now adopted by several production environments. See Adopters and Use Cases for public examples. We have our roadmap.
The User and Developer Documentation for youki is hosted at https://youki-dev.github.io/youki/
Local build is only supported on Linux. For other platforms, please use the Vagrantfile that we have prepared. You can also spin up a fully preconfigured development environment in the cloud with GitHub Codespaces.
To install just, follow the instruction here.
sudo apt-get install \
pkg-config \
libsystemd-dev \
build-essential \
libelf-dev \
libseccomp-dev \
libclang-dev \
libssl-dev
sudo dnf install \
pkg-config \
systemd-devel \
elfutils-libelf-devel \
libseccomp-devel \
clang-devel \
openssl-devel
git clone [email protected]:youki-dev/youki.git
cd youki
just youki-dev # or youki-release
./youki -h # you can get information about youki command
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗