# Intermodal
Container handling in Rust.
# Introduction
The goal is to implement functionality that can be used to handle Containers in Rust. More concretely -
1. Functionality to handle Container Images (Docker and OCI)
2. OCI Compliant Container Runtime
3. CRI Server, so this can run on a kubelet.
4. Tools/Utils that can be used directly.
The Goal is to make something that tools like [skopeo](https://github.com/containers/skopeo), [podman](https://github.com/containers/podman) and [runc](https://github.com/opencontainers/runc) achieve but implemented in Rust.
# Status
This is not even a `v0.1.0` yet, some functionality to 'inspect' docker images along the lines of `skopeo inspect` is present so far and a few test cases.
# Getting Started
Right now, one can `inspect` and `pull` an Image.
To get started, one can try to run the following commands and check their output.
1. Inspect an Image
```rust
$ cargo build
# Run `image inspect` command
# Add -d for debug -dd for trace log levels
$ ./target/debug/intmod image inspect docker:```
2. Pull an Image
```rust
$ cargo build
# Run `image pull` command
# Add -d for debug -dd for trace log levels
$ ./target/debug/intmod image pull docker:```
To run the unit tests, run `cargo test`.
# Roadmap
The broad plan to implement the following -
1. Image Inspect and Image Pull (So that a `rootfs` can be created.)
2. Basic Runtime support that will utilize above `rootfs` to bring up a container.
3. Add features like `cgroup`, `seccomp` etc.
4. Runtime with support for VMs (Using [rust-vmm](https://github.com/rust-vmm/)).
5. Front-end CRI server and other machinery needed (like `CNI` support etc.) to make it run with `crictl`.