Skip to content

xemul/libct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1d6a345 · Oct 6, 2017
Jul 7, 2014
Jun 6, 2014
Jul 7, 2015
Oct 1, 2017
Jul 6, 2015
Nov 11, 2015
Oct 22, 2015
Oct 30, 2014
Jul 7, 2014
Aug 13, 2015
Jul 7, 2015
Apr 21, 2015
Oct 22, 2015
Jul 6, 2015

Repository files navigation

Build Status

LIBCT

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.

Compiling

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/ && ./autogen.sh && ./configure && make)

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

make