This is a repository with some code I wrote to learn more about containers. It currently contains:
yacr
: a container runtime that implements the runtime-specyacs
: a container shim with an (HTTP) APIyaman
: a container manager that leverages the two previous toolsmicrovm
: a container runtime that uses micro Virtual Machines (VMs)
For more information, please refer to the documentation of each sub-project.
Want to give it a quick try? Open this project in Gitpod!
This project requires a Linux environment and the following dependencies:
fuse-overlayfs
for rootless containersuidmap
for rootless containersslirp4netns
for the network layer (rootfull and rootless containers)bats
,netcat
,jq
andrunc
for the integration teststap
(ornode-tap
) for the OCI comformance tests
For the microvm
runtime, this project also requires:
bison
,flex
,libelf-dev
to build the Linux kernelqemu-system
You should either use Gitpod as mentioned in the previous section or Vagrant. It might not be a good idea to run this project on your actual machine.
The easiest and quickest way to get started is to build all sub-projects:
$ make all
$ sudo make install
Optional step: run sudo make install_completion
to enable bash
auto-completion.
This project can be used with Vagrant to set up a Linux virtual machine. This is recommended as opposed to trying out the different tools on your actual Linux system.
$ vagrant up && vagrant ssh
From there, you can cd /vagrant
and follow the instruction to build the project (previous section).
You can also enable completion for yacr
and yaman
.
You must have the bash-completion
package installed first and you should possibly source /usr/share/bash-completion/bash_completion
in your bash configuration (~/.bashrc
). When type _init_completion
in your shell returns some content, you're all set.
You can now install the completion files:
$ sudo make install_completion
After reloading your shell, yacr
and yaman
autocompletion should be working.
See LICENSE.txt