De Linux Containers-gemeenschap heeft een release gepubliceerd van de tooling voor het organiseren van het werk met geĆÆsoleerde LXC-containers 6.0, die een runtime biedt die geschikt is voor het draaien van containers met een volledige systeemomgeving, die lijken op virtuele machines, evenals voor het uitvoeren van niet-bevoorrechte containers voor afzonderlijke applicaties (OCI). LXC behoort tot de low-level tooling die werkt op het niveau van afzonderlijke containers. Voor gecentraliseerd beheer van containers die zijn uitgerold in een cluster van meerdere servers, worden systemen Incus en LXD ontwikkeld op basis van LXC. De LXC 6.0-tak is geclassificeerd als een release met langdurige ondersteuning, waarbij updates gedurende 5 jaar worden aangeboden (tot 2029). De LXC-code is geschreven in de programmeertaal C en wordt verspreid onder de GPLv2-licentie.
LXC omvat de bibliotheek liblxc, een pakket hulpprogramma's (lxc-create, lxc-start, lxc-stop, lxc-ls, enz.), sjablonen voor het opbouwen van containers en een set bindings voor verschillende programmeertalen. Isolatie wordt gerealiseerd met behulp van de standaardmechanismen van de Linux-kernel. Voor het isoleren van processen, netwerkstacks ipc, uts, gebruikers-ID's en mountpunten wordt het mechanisme van namespaces gebruikt. Voor het beperken van middelen worden cgroups toegepast. Voor het verlagen van rechten en het beperken van toegang zijn mogelijkheden van de kernel zoals Apparmor-profielen, SELinux, Seccomp-beleidsregels, Chroots (pivot_root) en capabilities in gebruik.
Belangrijkste wijzigingen:
- Er is een mogelijkheid toegevoegd om een universele uitvoerbare bestand lxc te bouwen, die alle commando's combineert die eerder als afzonderlijke hulpprogramma's 'lxc-*' werden verspreid. Voor het bouwen van het samenvattende uitvoerbare bestand is de optie 'tools-multicall=true' voorgesteld, waarbij alle oude afzonderlijke hulpprogramma's worden aangemaakt als symbolische koppelingen naar het hulpprogramma lxc. De constructie in de vorm van ƩƩn uitvoerbaar bestand vermindert aanzienlijk de schijfruimte die door de tooling wordt verbruikt, wat belangrijk is voor embedded systemen.
- De functie set_timeout is toegevoegd aan de liblxc-bibliotheek, waarmee een timeout voor alle interactieoperaties met de LXC-monitor kan worden ingesteld.
- In de interface van de netwerkmuren lxcbr0 is standaard geactiveerd. ondersteuning voor IPv6 met adressen uit het IPv6 ULA-netwerk (Unique Local Address).
- In de hulpprogramma lxc-usernsexec zijn de opties '-u' en '-g' toegevoegd voor het wijzigen van de gebruikers- en groeps-id's (UID en GID).
- In het hulpprogramma lxc-checkconfig wordt de versie alleen weergegeven als het commando lxc-start beschikbaar is, en is er informatie toegevoegd over het maximaal toegestane aantal van elk type naamruimten.
- Ondersteuning voor containerafbeeldingen in het OCI-formaat is toegevoegd, waarbij Squashfs wordt gebruikt voor compressie.
- Voor interactie met systemd via D-Bus wordt een aparte bibliotheek libdbus-1 gebruikt in plaats van libsystemd.
- De ondersteuning voor het opstartingssysteem Upstart is beƫindigd.
Tegelijkertijd is de release van het Incus-project gepubliceerd, waarbinnen de Linux Containers-gemeenschap een fork van het containerbeheersysteem LXD ontwikkelt, gemaakt door het oude ontwikkelteam dat ooit LXD heeft gemaakt. De code van Incus is geschreven in de programmeertaal Go en wordt verspreid onder de Apache 2.0-licentie. Incus 6.0 wordt gepositioneerd als de eerste stabiele tak waarvoor een langdurige updatecyclus (LTS) zal worden gegarandeerd. Onder de wijzigingen in Incus 6.0 valt de mogelijkheid om netwerkinterfaces te creĆ«ren via de API bridge.external_interfaces, verbeterde ondersteuning voor authenticatie via JWT (JSON Web Token), ondersteuning voor USB en gedetailleerde systeeminformatie weergeven met het commando āincus info āresourcesā, evenals de ondersteuning van de LXD 5.21-release in het hulpprogramma lxd-to-incus.
Incus en LXD bieden tools voor gecentraliseerd beheer van containers en virtuele machines, die zowel op één host als in een cluster van meerdere hosts zijn uitgerold. serversHet project is geïmplementeerd als een achtergrondproces dat netwerkverzoeken via REST API accepteert en verschillende opslag-backends (bestandsstructuren, ZFS, Btrfs, LVM) ondersteunt, evenals snapshots van de status, live-migratie van werkende containers van de ene machine naar de andere en middelen voor het opslaan van containerafbeeldingen. LXC-tools worden gebruikt als runtime voor het uitvoeren van containers. Isolatie wordt bereikt met behulp van de standaardmechanismen van de Linux-kernel (naamruimten, cgroups, Apparmor, SELinux, Seccomp).
De Linux Containers-gemeenschap heeft de ontwikkeling van LXD jarenlang beheerd voordat Canonical besloot om LXD om te vormen tot een bedrijfsproject. Het doel van de fork is om een door de gemeenschap beheerde, onafhankelijke alternatief te bieden voor het LXD-project dat onder controle van Canonical staat. De oprichting van Incus maakte het ook mogelijk om enkele conceptuele fouten te verhelpen die zijn gemaakt tijdens de ontwikkeling van LXD, en die eerder niet konden worden gecorrigeerd zonder de achterwaartse compatibiliteit te schaden.
Canonical heeft een nieuwe versie van het containerbeheersysteem LXD 5.21.1 gepubliceerd. De LXD 5.21-tak is gelabeld als LTS en wordt ondersteund tot juni 2029. De code die door de medewerkers van Canonical aan LXD is toegevoegd, wordt geleverd onder de AGPLv3-licentie, maar de code van externe bijdragers, waar Canonical geen eigendomsrechten op heeft, blijft onder Apache 2.0. Van de functionele wijzigingen in LXD 5.21.1 kan worden opgemerkt dat het snap-pakket van LXD is overgezet naar de takken LXC 6.0 en LXCFS 6.0. De API heeft de uitbreiding storage_volumes_all en de bijbehorende handler /1.0/storage_volumes toegevoegd voor het weergeven van een lijst met alle opslagvolumes. De uitbreiding instances_files_modify_permissions is toegevoegd om via de API toegangsrechten voor bestaande bestanden te wijzigen.
De release van het virtuele FS LXCFS 6.0 is beschikbaar, dat wordt gebruikt om in containers pseudo-FS /proc en /sys te simuleren, evenals voor een gevirtualiseerde weergave van cgroupfs voor distributies zonder ondersteuning van cgroup-namespaces. In de nieuwe versie is de optie "--enable-cgroup" toegevoegd, waarmee het beheer van de ingebouwde functionaliteit voor het creƫren van een virtuele cgroupfs-boom voor containers met cgroupv1 mogelijk is (momenteel ondersteunen de meeste distributies de door de kernel geboden namespaces voor cgroup, waardoor de standaardinschakeling van de alternatieve implementatie zijn betekenis heeft verloren en nu optioneel is). Bovendien is in LXCFS 6.0 de filtering van CPU bij het genereren van het bestand /sys/devices/system/cpu stopgezet, afhankelijk van de status online/offline.
Bron: opennet.ru
