Skip to content

📦 This is a repository with some code I wrote to learn more about containers.

License

Notifications You must be signed in to change notification settings

willdurand/containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

containers

CI

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-spec
  • yacs: a container shim with an (HTTP) API
  • yaman: a container manager that leverages the two previous tools
  • microvm: a container runtime that uses micro Virtual Machines (VMs)

For more information, please refer to the documentation of each sub-project.

asciicast

Want to give it a quick try? Open this project in Gitpod!

Building this project

This project requires a Linux environment and the following dependencies:

  • fuse-overlayfs for rootless containers
  • uidmap for rootless containers
  • slirp4netns for the network layer (rootfull and rootless containers)
  • bats, netcat, jq and runc for the integration tests
  • tap (or node-tap) for the OCI comformance tests

For the microvm runtime, this project also requires:

  • bison, flex, libelf-dev to build the Linux kernel
  • qemu-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.

Vagrant

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).

bash auto-completion on Linux

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.

License

See LICENSE.txt