Компания Canonical опубликовала релиз инструментария для организации работы изолированных контейнеров LXC 5.0, предоставляющий runtime, подходящий как для запуска контейнеров с полным системным окружением, близких к виртуальным машинам, так и для выполнение непривилегированных контейнеров отдельных приложений (OCI). LXC относится к низкоуровневым инструментариям, работающим на уровне отдельных контейнеров. Для централизованного управления контейнерами, развёрнутыми в кластере из нескольких серверов, на базе LXC развивается система LXD. Ветка LXC 5.0 отнесена к выпускам с длительной поддержкой, обновления для которых формируются в течение 5 лет. Код LXC написан на языке Си и распространяется под лицензией GPLv2.
В состав LXC входит библиотека liblxc, набор утилит (lxc-create, lxc-start, lxc-stop, lxc-ls и т.п.), шаблоны для построения контейнеров и набор биндингов для различных языков программирования. Изоляция осуществляется при помощи штатных механизмов ядра Linux. Для изоляции процессов, сетевого стека ipc, uts, идентификаторов пользователей и точек монтирования используется механизм пространств имён (namespaces). Для ограничения ресурсов применяются cgroups. Для понижения привилегий и ограничения доступа задействованы такие возможности ядра, как профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и capabilities.
Основные изменения:
- Осуществлён переход c autotools на сборочную систему Meson, которая также используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK.
- Добавлены новые опции для настройки cgroup – lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot и lxc.cgroup.dir.container.inner, которые позволяют явно определить пути cgroup для контейнера, процесса мониторинга и вложенных иерархий
cgroup. - Добавлена поддержка пространства имён для времени (time namespaces) для привязки к контейнеру отдельного состояния системных часов, позволяющего использовать в контейнере своё время, отличное от системного. Для настройки предложены опции lxc.time.offset.boot и lxc.time.offset.monotonic, позволяющие определить для контейнера смещение относительно основных системных часов.
- Для виртуальных ethernet-адаптеров (Veth) реализована поддержка
VLAN. Для управления VLAN предложены опции: veth.vlan.id для задания основного VLAN и veth.vlan.tagged.id для привязки дополнительных теггированных VLAN. - Для виртуальных ethernet-адаптеров добавлена возможность настройки размера очередей приёма и передачи при помощи новых опций veth.n_rxqueues и veth.n_txqueues.