containers

module
v0.0.0-...-ac6e8c9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2022 License: Apache-2.0

README

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

Directories

Path Synopsis
cmd
yacr
Yet Another Container Runtime
Yet Another Container Runtime
yaman
Yet Another (Container) MANager.
Yet Another (Container) MANager.
internal
cli
Package cli contains the common features used to build CLI applications.
Package cli contains the common features used to build CLI applications.
cmd
constants
Package constants provides common constant definitions.
Package constants provides common constant definitions.
version
Package version provides a function to print the version of this project, and it is usually exposed in a `version` command for each CLI application.
Package version provides a function to print the version of this project, and it is usually exposed in a `version` command for each CLI application.
thirdparty

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL