Linux containers control plane
C Go Makefile Python C++
Switch branches/tags
Nothing to show
Clone or download
xemul Merge pull request #49 from RantyDave/master
Python 3 compatibility
Latest commit 1d6a345 Oct 6, 2017
Failed to load latest commit information.

Build Status


Libct is a containers management library which provides convenient API for frontend programs to rule a container during its whole lifetime.

The library operates on two entities:

  • session -- everyone willing to work with container must first open a session. Currently there is only one type of session -- local, when all containers are created as child tasks of the caller using namespaces, cgroups etc.;

  • container -- a container. By default container is "empty", when started it is merely a fork()-ed process. Container can be equipped with various things, e.g.

    • Namespaces. Libct accepts clone mask with which container is started

    • Controllers. One may configure all existing CGroup controllers inside which container will be started.

    • Root on a filesystem. This is a directory into which container will be chroot()-ed (or pivot_root()-ed if mount namespace is used).

    • Private area. This is where the files for container are. Currently only one type is supported -- a directory that will be bind-mounted into root.

    • Network. Caller may assign host NIC of veth pair's end to container on start.

For more details, see Documentation/libct.txt. For usage examples, see test directory. All the API calls, types and constants are collected in src/include/uapi/libct.h.


Currently, libct depends on libnl which is configured as a git submodule. So, before trying to compile libct for the first time you need to prepare libnl first:

git submodule update --init --recursive
(cd .shipped/libnl/ && ./ && ./configure && make)

Once it is done, please compile as usual, i.e.