Компания Canonical релиз инструментария за организация на работа с изолирани контейнери , мениджър на контейнери и виртуална файлова система за симулация в контейнери /proc, /sys и виртуализираното представяне cgroupfs за дистрибуции без поддръжка на пространства от имена за cgroup. Версия 4.0 е част от изданията с дългосрочна поддръжка, чиито актуализации се генерират в продължение на 5 години
LXC е runtime за стартиране както на системни контейнери, така и на контейнери за отделни приложения (OCI). Включва библиотека liblxc, набор от инструменти (lxc-create, lxc-start, lxc-stop, lxc-ls и др.), шаблони за изграждане на контейнери и набор от биндинги за различни програмни езици. Изолацията се осъществява с помощта на стандартни механизми на ядрото на Linux. За изолация на процеси, мрежов стек, ipc, uts, идентификатори на потребители и точки на монтиране се използва механизмът на пространства от имена (namespaces). За ограничаване на ресурсите се използват cgroups. За понижаване на привилегиите и ограничаване на достъпа са активирани възможности на ядрото, като профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и capabilities. Кодът на LXC е написан на C и се разпространява под лицензия GPLv2.
LXD е надстройка над LXC, CRIU и QEMU, използвана за централизирано управление на контейнери и виртуални машини на един или повече сървъри. Докато LXC е нискоуровнев инструмент за манипулация на ниво единични контейнери, LXD е реализиран като фонов процес, който приема заявки през мрежата чрез REST API и позволява изграждане на мащабируеми конфигурации, разположени в клъстер от няколко сървъра.
Поддържат се различни бекенди за съхранение (дърво от директории, ZFS, Btrfs, LVM), снимки на състояние, миграция на работещи контейнери от една машина на друга и средства за организиране на хранилище на образи. Кодът на 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);
- Добавена е поддръжка , виртуална ФС за свързване на точки на монтиране с пространствата на имената на идентификатори на потребители (user namespace);
- Предложени са нови типове мрежови адаптери „ipvlan“ и „routed“;
- Добавен е бекенд за използване на хранилища на база CephFS;
- За клъстери е реализирана поддръжка на репликация на образи и многоархитектурни конфигурации;
- Добавена е възможност за управление на достъпа на база роли (RBAC);
- Добавена е поддръжка на CGroup2;
- Добавена е възможност за конфигуриране на MAC-адреса и определяне на адреса на източника за NAT;
- Добавен е API за управление на свързванията в DHCP (leases);
- Добавена е поддръжка на Nftables.
Източник: opennet.ru
