Virksomheden Canonical udgivelse af værktøjer til at organisere arbejdet i isolerede containere , containeradministrator og virtuel filsystem til simulering i containere /proc, /sys og den virtualiserede repræsentation af cgroupfs til distributioner uden understøttelse af navnerum for cgroup. Version 4.0 er klassificeret som en langvarig supportudgivelse med opdateringer, der leveres over en periode på 5 år
LXC er et runtime til kørsel af både systemcontainere og containere til enkeltapplikationer (OCI). LXC inkluderer biblioteket liblxc, et sæt værktøjer (lxc-create, lxc-start, lxc-stop, lxc-ls osv.), skabeloner til opbygning af containere og et udvalg af bindings til forskellige programmeringssprog. Isolationen sikres ved hjælp af de indbyggede mekanismer i Linux-kernen. For at isolere processer, netværksstak, ipc, uts, bruger-id'er og monteringspunkter anvendes navnerum (namespaces). Ressourcer begrænses ved hjælp af cgroups. For at sænke privilegierne og begrænse adgangen anvendes funktioner som Apparmor-profiler, SELinux-politikker, Seccomp-regler, Chroots (pivot_root) og capabilities. Koden for LXC er skrevet i C og distribueres under GPLv2-licensen.
LXD er et lag oven på LXC, CRIU og QEMU, der anvendes til centraliseret administration af containere og virtuelle maskiner på en eller flere servere. Mens LXC er et lavniveau værktøj til håndtering af enkelte containere, implementeres LXD som en baggrundsproces, der modtager anmodninger over netværket via REST API og muliggør oprettelse af skalerbare konfigurationer, der udrulles på et klynge af flere servere.
Forskellige backend-lagringsmuligheder understøttes (biblioteksstruktur, ZFS, Btrfs, LVM), snapshots med tilstandsoptagelse, live-migrering af kørende containere fra én maskine til en anden og værktøjer til organisering af billedlager. Koden for LXD er skrevet i Go og distribueres under Apache 2.0-licensen.
Nøglepunkter i LXC 4.0:
- Driveren til arbejde med cgroup er helt omskreven. Support for den enhedlige cgroup-hierarki (cgroup2) er blevet tilføjet. Funktionaliteten af frysecontrolleren er blevet tilføjet, som gør det muligt at stoppe arbejdet i cgroup og midlertidigt frigive nogle ressourcer (CPU, input/output og potentielt endda hukommelse) til at udføre andre opgaver;
- Infrastrukturen til indfangning af systemopkald er implementeret;
- Understøttelse af kerneunderkernen "pidfd" er tilføjet, som er designet til at håndtere situationer med genbrug af PID (pidfd er bundet til en specifik proces og ændres ikke, mens PID kan knyttes til en anden proces efter afslutningen af den nuværende proces, der er associeret med denne PID);
- Forbedret oprettelse og sletning af netværksenheder samt deres flytning mellem navnerum i netværksunderkernen;
- Muligheden for at flytte trådløse netværksenheder (nl80211) til containere er implementeret.
Nøglepunkter i LXD 4.0:
- Understøttelse af at starte ikke kun containere, men også virtuelle maskiner er tilføjet;
- For segmentering af LXD-servere er konceptet med projekter foreslået, hvilket forenkler administrationen af grupper af containere og virtuelle maskiner. Hver projekt kan indeholde sit eget sæt af containere, virtuelle maskiner, billeder, profiler og lagringsafsnit. Der kan opsættes specifikke begrænsninger og ændres indstillinger knyttet til projekterne;
- Understøttelse af indfangning af systemopkald for containere er tilføjet;
- Oprettelse af sikkerhedskopier af miljøer og gendannelse fra dem er implementeret;
- Automatiseret oprettelse af snapshots af miljøer og lagringsafsnit er sikret med mulighed for at angive levetid for snapshot;
- API til overvågning af netværkets tilstand (lxc network info) er tilføjet;
- Tilføjet support for , virtuel FS til at kortlægge monteringspunkter til navnerum for brugeridentifikatorer (user namespace);
- Nye typer netværksadaptere "ipvlan" og "routed" er foreslået;
- En backend til brug af lagre baseret på CephFS er tilføjet;
- Understøttelse af replikation af billeder og multi-arkitekturelle konfigurationer er implementeret for klynger;
- Muligheden for rollebaseret adgangskontrol (RBAC) er tilføjet;
- Understøttelse af CGroup2 er tilføjet;
- Muligheden for at konfigurere MAC-adresse og definere kildeadresse til NAT er tilføjet;
- API til at styre bindinger i DHCP (leases) er tilføjet;
- Understøttelse af Nftables er tilføjet.
Kilde: opennet.ru
