Выпуск инструментария управления контейнерами LXC и LXD 4.0

Компания Canonical опубликовала релиз инструментария для организации работы изолированных контейнеров LXC 4.0, менеджера контейнеров LXD 4.0 и виртуальной ФС LXCFS 4.0 для симуляции в контейнерах /proc, /sys и виртуализированного представления cgroupfs для дистрибутивов без поддержи пространств имён для cgroup. Ветка 4.0 отнесена к выпускам с длительной поддержкой, обновления для которых формируются в течение 5 лет

LXC представляет собой runtime для запуска как системных контейнеров, так и контейнеров для отдельных приложений (OCI). В состав LXC входит библиотека liblxc, набор утилит (lxc-create, lxc-start, lxc-stop, lxc-ls и т.п.), шаблоны для построения контейнеров и набор биндингов для различных языков программирования. Изоляция осуществляется при помощи штатных механизмов ядра Linux. Для изоляции процессов, сетевого стека ipc, uts, идентификаторов пользователей и точек монтирования используется механизм пространств имён (namespaces). Для ограничения ресурсов применяются cgroups. Для понижения привилегий и ограничения доступа задействованы такие возможности ядра, как профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и capabilities. Код LXC написан на языке Си и распространяется под лицензией GPLv2.

LXD представляет собой надстройку над LXC, CRIU и QEMU, применяемую для централизованного управления контейнерами и виртуальными машинами на одном или нескольких серверах. Если LXC является низкоуровневым инструментарием для манипуляции на уровне отдельных контейнеров, то LXD реализован в виде фонового процесса, принимающего запросы по сети через REST API и позволяющего создавать масштабируемые конфигурации, развёрнутые на кластере из нескольких серверов. Поддерживаются различные бэкенды хранилищ (дерево директорий, ZFS, Btrfs, LVM), снапшоты со срезом состояния, live-миграция работающих контейнеров с одной машины на другую и средства для организации хранилища образов. Код LXD написан на языке Go и распространяется под лицензией Apache 2.0.

Ключевые улучшения в LXC 4.0:

  • Полностью переписан драйвер для работы с cgroup. Добавлена поддержка унифицированной иерархии cgroup (cgroup2). Добавлена функциональность контроллера freezer, при помощи которого можно остановить работу в cgroup и временно высвободить некоторые ресурсы (CPU, ввод/вывод и потенциально даже память) для выполнения других задач;
  • Реализована инфраструктура для перехвата системных вызовов;
  • Добавлена поддержка подсистемы ядра «pidfd», предназначенной для обработки ситуации с повторным использованием PID (pidfd связывается с конкретным процессом и не меняется, в том время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID);
  • Улучшено создание и удаление сетевых устройств, а также их перемещения между пространствами имён сетевой подсистемы;
  • Реализована возможность перемещения беспроводных сетевых устройств (nl80211) в контейнеры.

Ключевые улучшения в LXD 4.0:

  • Добавлена поддержка запуска не только контейнеров, но и виртуальных машин;
  • Для сегментирования серверов LXD предложена концепция проектов, упрощающих управление группами контейнеров и виртуальных машин. Каждый проект может включать свой набор контейнеров, виртуальных машин, образов, профилей и разделов хранения. В привязке к проектам можно задавать свои ограничения и менять настройки;
  • Добавлена поддержка перехвата системных вызовов для контейнеров;
  • Реализовано создание резервных копий окружений и восстановление из них;
  • Обеспечено автоматизированное создание снапшотов окружений и разделов хранилищ с возможностью задания времени существования снапшота;
  • Добавлен API для мониторинга за состоянием сети (lxc network info);
  • Добавлена поддержка shiftfs, виртуальной ФС для сопоставления точек монтирования с пространствами имён идентификаторов пользователей (user namespace);
  • Предложены новые типы сетевых адаптеров «ipvlan» и «routed»;
  • Добавлен бэкенд для использования хранилищ на базе CephFS;
  • Для кластеров реализована поддержка репликации образов и многоархитектурыных конфигураций;
  • Добавлена возможность управления доступом на основе ролей (RBAC);
  • Добавлена поддержка CGroup2;
  • Добавлена возможность настройки MAC-адреса и определения адреса источника для NAT;
  • Добавлен API для управления привязками в DHCP (leases);
  • Добавлена поддержка Nftables.

Источник: http://www.opennet.ru/opennews/art.shtml?num=52679