1
0
mirror of https://github.com/containers/youki synced 2024-09-20 02:41:47 +02:00
youki/README.md
2021-05-17 23:30:38 +09:00

77 lines
2.6 KiB
Markdown

# youki: A container runtime in Rust
![logo](docs/youki.png)
> rusty container
youki is an implementation of [runtime-spec](https://github.com/opencontainers/runtime-spec) in Rust, referring to [runc](https://github.com/opencontainers/runc).
# Motivation
Here is why we are writing a new container runtime in Rust.
- Rust is one of the best languages to implement oci-runtime. Many container tools are written in Go. It's all very nice products. However, the container runtime requires the use of system calls, which requires a bit of special handling when implemented in Go. This is too tricky(e.g. *namespaces(7)*, *fork(2)*); with Rust, it's not that tricky and you can use system calls. Also, unlike C, Rust provides the benefit of memory management.
- The development of [railcar](https://github.com/oracle/railcar) has been suspended. This project was very nice but is no longer being developed. This project is inspired by it.
- We have fun implementing this. In fact, this may be the most important.
# Status of youki
youki is not at the practical stage yet. However, it is getting closer to practical use, running with docker and passing all the default tests provided by [opencontainers/runtime-rools](https://github.com/opencontainers/runtime-tools).
![youki demo](docs/demo.gif)
# Getting Started
Local build is only supported on linux.
For other platforms, please use the devcontainer that we prepared.
## Requires
- Rust(See [here](https://www.rust-lang.org/tools/install))
- Docker
## Building
```sh
$ git clone git@github.com:utam0k/youki.git
$ cd youki
$ cargo build
```
## Usage
Starting the docker daemon.
```
$ dockerd --experimental --add-runtime="youki=$(pwd)/target/x86_64-unknown-linux-gnu/debug/youki"
```
You can use youki in a different terminal to start the container.
```
$ docker run -it --rm --runtime youki busybox
```
### Integration test
You can use [opencontainers/runtime-rools](https://github.com/opencontainers/runtime-tools) to do integration testing used in CI.
See it's documentation for details.
# Design and implementation of youki
TBD
# Features
- [x] run with docker
- [x] pivot root
- [x] mount devices
- [x] namespace
- [x] capabilities
- [x] rlimits
- [ ] cgroups v1
- [x] devices
- [ ] cpu
- [ ] cpuacct
- [ ] cpuset
- [ ] memory
- [ ] freezer
- [ ] net_cls
- [ ] blkio
- [ ] perf_event
- [ ] net_prio
- [ ] hugetlb
- [ ] pids
- [ ] rdma
- [ ] hooks
# Contribution
This project welcomes your PR and issues.
For example, refactoring, adding features, correcting English, etc.
If you need any help, you can contact me on [Twitter](https://twitter.com/utam0k).