Zajednica Linux kontejnera objavila je izdanje alata za upravljanje izoliranim LXC kontejnerima 6.0, koji pruža runtime pogodnog za pokretanje kontejnera s punim sistemskim okruženjem, sličnima virtualnim mašinama, kao i za izvođenje nekontroliranih kontejnera pojedinačnih aplikacija (OCI). LXC se odnosi na niskorazinske alate koji rade na razini pojedinačnih kontejnera. Za centralizirano upravljanje kontejnerima raspoređenim u klasterima više poslužitelja, na temelju LXC razvijaju se sustavi Incus i LXD. Grana LXC 6.0 smatra se izdanjem s dugotrajnom podrškom, a ažuriranja se provode tijekom 5 godina (do 2029. godine). Kod LXC napisan je na jeziku C i distribuira se pod GPLv2 licencom.
U sklopu LXC nalazi se biblioteka liblxc, skup utiliteta (lxc-create, lxc-start, lxc-stop, lxc-ls itd.), predlošci za izgradnju kontejnera i skup bindova za razne programske jezike. Izolacija se provodi pomoću standardnih mehanizama Linux jezgre. Za izolaciju procesa, mrežnog stoga ipc, uts, identiteta korisnika i točaka montiranja koristi se mehanizam prostora imena (namespaces). Za ograničavanje resursa koriste se cgroups. Za smanjenje privilegija i ograničavanje pristupa uključene su mogućnosti jezgre, kao što su profili Apparmor i SELinux, politike Seccomp, Chroots (pivot_root) i capabilities.
Glavne promjene:
- Omogućena je izrada univerzalne izvršne datoteke lxc, koja kombinira sve naredbe koje su se ranije distribuirale kao odvojeni alati «lxc-*» u jednoj utiliti. Za izradu zbirne izvršne datoteke predložena je opcija «tools-multicall=true», koja, kada se postavi, stvara sve stare odvojene alate kao simbolične linkove prema alatu lxc. Izrada u obliku jedne izvršne datoteke značajno smanjuje potrošnju prostora na disku, što je relevantno za ugrađene sustave.
- U biblioteku liblxc dodana je funkcija set_timeout, koja omogućava postavljanje vremenskog ograničenja za bilo koje operacije interakcije s LXC monitorom.
- Na sučelju mrežnih mostova lxcbr0 po defaultu je aktivirana podrška za IPv6 s dodavanjem adresa iz IPv6 ULA (Jedinstvena lokalna adresa) podmreže.
- U alatu lxc-usernsexec dodane su opcije «-u» i «-g» za promjenu identifikatora korisnika i grupe (UID i GID).
- U alatu lxc-checkconfig osiguran je prikaz verzije samo u prisutnosti naredbe lxc-start i dodano je informiranje o maksimalno dozvoljenom broju svake vrste prostora imena.
- Dodana je podrška za slike kontejnera u OCI formatu, u kojima se za kompresiju informacija koristi datotečni sustav Squashfs.
- Za interakciju s systemd kroz D-Bus korištena je odvojena biblioteka libdbus-1 umjesto libsystemd.
- Prekinuta je podrška za sustav inicijalizacije Upstart.
Istodobno je objavljen projekt Incus, unutar kojeg zajednica Linux Containers razvija fork sustava za upravljanje kontejnerima LXD, koji je nekada stvorila stara ekipa programera koja je radila na LXD-u. Kod Incusa napisano je na Go jeziku i distribuira se pod licencom Apache 2.0. Incus 6.0 se prvi puta pozicionira kao stabilna grana za koju će biti osigurano dugotrajno formiranje ažuriranja (LTS). Od promjena u Incusu 6.0 ističe se mogućnost stvaranja mrežnih sučelja putem API-a bridge.external_interfaces, poboljšana podrška za autentifikaciju putem JWT (JSON Web Token), podrška za USB i prikaz detaljnih sistemskih informacija s naredbom „incus info —resources“, te podrška za izdanje LXD 5.21 u alatu lxd-to-incus.
Incus i LXD pružaju alate za centralizirano upravljanje kontejnerima i virtualnim strojevima, raspoređenima kako na jednom hostu, tako i u klasteru više njih. poslužitelja. Projekt je realiziran kao pozadinski proces koji prihvaća zahtjeve putem mreže preko REST API-ja i podržava različite backend skladišne sustave (stablo direktorija, ZFS, Btrfs, LVM), snimke trenutnog stanja, live-migraciju aktivnih kontejnera s jedne mašine na drugu i alate za pohranu slika kontejnera. Kao runtime za pokretanje kontejnera koristi se alat LXC. Izolacija se ostvaruje pomoću standardnih mehanizama jezgre Linuxa (imenske prostore, cgroups, Apparmor, SELinux, Seccomp).
Zajednica Linux Containers nadgledala je razvoj LXD-a prije nego što je tvrtka Canonical odlučila transformirati LXD u korporativni projekt. Cilj forka je pružiti upravljanu neovisnu alternativu projektu LXD, pod kontrolom tvrtke Canonical. Stvaranje Incusa također je omogućilo ispravljanje nekih konceptualnih grešaka koje su nastale tijekom razvoja LXD-a, a koje ranije nije bilo moguće ispraviti bez kršenja unazadne kompatibilnosti.
Tvrtka Canonical objavila je novu verziju sustava za upravljanje kontejnerima LXD 5.21.1. Grana LXD 5.21 označena je kao LTS i bit će podržavana do lipnja 2029. godine. Kod koji su dodali zaposlenici Canonicala dostupan je pod licencom AGPLv3, dok kod vanjskih suradnika, za koji Canonical nema vlasnička prava, ostaje pod licencom Apache 2.0. Od funkcionalnih promjena u LXD 5.21.1 može se istaknuti prijenos snap paketa s LXD na grane LXC 6.0 i LXCFS 6.0. U API je dodano proširenje storage_volumes_all i povezani obrtnik /1.0/storage_volumes za ispis popisa sa svim odjeljcima za pohranu. Dodano je proširenje instances_files_modify_permissions za promjenu pristupnih prava postojećih datoteka putem API-ja.
Objavljen je virtualni FS LXCFS 6.0, koji se koristi za simulaciju pseudo-FS /proc i /sys unutar kontejnera, kao i za virtualizirano prikazivanje cgroupfs za distribucije koje nemaju podršku za imenske prostore cgroup. U novoj verziji dodana je opcija "—enable-cgroup", koja omogućuje upravljanje aktivacijom ugrađene funkcionalnosti za stvaranje virtualnog stabla cgroupfs za kontejnere, koristeći cgroupv1 (trenutno većina distribucija podržava imenske prostore za cgroup koje pruža jezgra pa je aktivacija ugrađene alternativne implementacije izgubila smisao i sada je opcionalna). Osim toga, u LXCFS 6.0 prestala je filtracija CPU-a prilikom generiranja datoteke /sys/devices/system/cpu, ovisno o stanju online/offline.
Izvor: opennet.ru
