Porto
OVERVIEW
Porto is a Linux container management system, developed by Yandex. The main goal of Porto is to create a convenient, reliable interface over several Linux kernel mechanism such as cgroups, namespaces, mounts, networking etc. Porto is intended to be used as a base for building large infrastructure projects. Porto provides a protobuf-based interface via an Unix socket. C++, Python and Go APIs are included. A command line tool (portoctl) for managing Porto-containers is also provided.
Porto has the following key-features:
- Container hierarchies: you can manage nested groups of containers, limit their aggregate resource usage and share resources between containers in a flexible manner.
- Container namespaces: you can run any container-management software inside a container without any modifications.
- Flexible isolation: you can control which resources are isolated. You can easily integrate Porto into your existing infrastructure.
BUILDING
$ cmake .
$ make
$ make install DESTDIR=/usr/local
RUNNING
Porto requires only Linux kernel 3.4+, although some functionality requires newer kernels (for instance, 3.18+ for OverlayFs) or even offstream patches.
$ sudo portod &
$ portoctl run my_container command='echo "Hello, world!"'
$ portoctl wait my_container
$ portoctl get my_container stdout
$ portoctl get my_container exit_status
$ portoctl destroy my_container
or
$ portoctl exec my_container command='echo "Hello, world!"'