The facts are clear, Koyshkin said at the outset: every computer has but finite resources such as CPU time, memory, hard disk size and I/O, and network I/O. Administrators are interested in protecting these resources from DoS attacks so that they can continue providing QoS or simple processing.

The Linux kernel already provides resource management tools, said Kolyshkin: disk quotas, nice and renice, the real-time priority queue and limits on CPU time with ulimit -c. Ulimit alone controls 16 different parameters. However, Kolyshkin doesn't find this pallet to be enough. Some limits can't be set and the others are done so at login and can't subsequently be regulated. This is where Kolyshkin brought OpenVZ into the picture. The software allows creating multiple isolated userspace instances, called containers, on a single kernel. Webhosters, for example, could use these containers for their services. From a resource management viewpoint, containers are simply groups of processes.

OpenVZ brings its own resource control mechanisms, called beancounters, that have access to 20 parameters modifiable for process groups at runtime. These groups can be containers, users or applications. For example, the Apache 2 webserver has many processes that could more sensibly combined into application groups. OpenVZ categorizes these user beancounters (UBCs) on its wiki page.

Kolyshkin revealed that further mainline kernel control mechanisms are available through control groups (cgroups) developed over the years by the big iron folks at Bull and SGI. Paul Menage was responsible for bringing cgroups into the Linux kernel for grouping processes for binding memory controllers. Cgroups, however, don't offer as many features as OpenVZ's beancounters, although Kolyshkin wishes for future OpenVZ features such as shared pages accounting, I/O priorities per cgroup and checkpoint/recreate. The latter freezes the state of a group and is used by container or virtualization software such as OpenVZ and Xen for live migration. Further details are in the /usr/src/linux/Documentation/cgroups/* and /controllers/* directories of the kernel source code.

Kolyshkin would love to see the OpenVZ container features integrated into the mainline kernel, but that will "take years." But he's thinking of the future: integration of checkpoint/recreate in the official Linux kernel.

Docker is an economical alternative to conventional virtualization. Because each Docker container shares the underlying operating system, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.