Společnost Canonical vydání nástrojů pro organizaci práce izolovaných kontejnerů , manažer kontejnerů a virtuální FS pro simulaci v kontejnerech /proc, /sys a virtualizovaného zobrazení cgroupfs pro distribuce bez podpory jmenných prostorů pro cgroup. Větev 4.0 je zahrnuta mezi vydání s dlouhodobou podporou, pro která jsou aktualizace vydávány po dobu 5 let
LXC představuje runtime pro spuštění jak systémových kontejnerů, tak kontejnerů pro jednotlivé aplikace (OCI). LXC zahrnuje knihovnu liblxc, sadu utilit (lxc-create, lxc-start, lxc-stop, lxc-ls atd.), šablony pro vytváření kontejnerů a sadu vazeb pro různé programovací jazyky. Izolace se provádí pomocí standardních mechanismů jádra Linux. Pro izolaci procesů, síťového zásobníku ipc, uts, identifikátorů uživatelů a bodů připojení se používá mechanismus jmenných prostorů (namespaces). Pro omezení zdrojů se používají cgroups. Pro snížení oprávnění a omezení přístupu jsou využity možnosti jádra, jako jsou profily Apparmor a SELinux, politiky Seccomp, Chroots (pivot_root) a capabilities. Kód LXC je napsán v jazyce C a je distribuován pod licencí GPLv2.
LXD je vrstva nad LXC, CRIU a QEMU, používaná pro centralizované řízení kontejnerů a virtuálních strojů na jednom nebo více serverech. Pokud je LXC nízkoúrovňový nástroj pro manipulaci na úrovni jednotlivých kontejnerů, LXD funguje jako proces na pozadí, přijímající požadavky přes síť prostřednictvím REST API a umožňující vytvářet škálovatelné konfigurace nasazené na clusteru několika serverů.
Podporovány jsou různé backendy úložišť (strom adresářů, ZFS, Btrfs, LVM), snapshoty se snímkem stavu, live migrace běžících kontejnerů z jednoho stroje na druhý a prostředky pro organizaci úložiště obrazů. Kód LXD je napsán v jazyce Go a je distribuován pod licencí Apache 2.0.
Klíčové v LXC 4.0:
- Byl kompletně přepsán ovladač pro práci s cgroup. Byla přidána podpora unifikované hierarchie cgroup (cgroup2). Byla přidána funkčnost kontroléru freezer, pomocí kterého lze zastavit chod v cgroup a dočasně uvolnit některé zdroje (CPU, I/O a potenciálně i paměť) pro vykonání jiných úkolů;
- Byla realizována infrastruktura pro zachycení systémových volání;
- Byla přidána podpora jádrové podsouboru „pidfd“, určeného pro zpracování situace s opětovným použitím PID (pidfd je spojen s konkrétním procesem a nemění se, zatímco PID může být přiřazen jinému procesu po ukončení aktuálního procesu spojeného s tímto PID);
- Bylo vylepšeno vytváření a odstraňování síťových zařízení, stejně jako jejich přesun mezi prostory jmen síťového podsystému;
- Byla realizována možnost přesouvání bezdrátových síťových zařízení (nl80211) do kontejnerů.
Klíčové ve verzi LXD 4.0:
- Byla přidána podpora pro spuštění nejen kontejnerů, ale také virtuálních strojů;
- Pro segmentaci serverů LXD byla navržena koncepce projektů, která usnadňuje správu skupin kontejnerů a virtuálních strojů. Každý projekt může zahrnovat svůj vlastní soubor kontejnerů, virtuálních strojů, obrazů, profilů a oddílů úložiště. V rámci projektů lze stanovit vlastní omezení a měnit nastavení;
- Byla přidána podpora pro zachycení systémových volání pro kontejnery;
- Bylo realizováno vytváření záloh prostředí a jejich obnova;
- Bylo zajištěno automatizované vytváření snapshotů prostředí a oddílů úložišť s možností stanovení doby existence snapshotu;
- Bylo přidáno API pro monitorování stavu sítě (lxc network info);
- Byla přidána podpora , virtuální FS pro mapování bodů připojení s prostory jmen identifikátorů uživatelů (user namespace);
- Byly navrženy nové typy síťových adaptérů „ipvlan“ a „routed“;
- Byl přidán backend pro použití úložišť založených na CephFS;
- Pro clustery byla realizována podpora replikace obrazů a multi-architektonických konfigurací;
- Byla přidána možnost správy přístupu na základě rolí (RBAC);
- Byla přidána podpora CGroup2;
- Byla přidána možnost nastavení MAC adresy a určení adresy zdroje pro NAT;
- Bylo přidáno API pro správu vazeb v DHCP (leases);
- Byla přidána podpora Nftables.
Zdroj: opennet.ru
