Azienda Canonical rilascio dello strumento per organizzare il funzionamento di container isolati , gestore di container e filesystem virtuale per simulare nei container /proc, /sys e la rappresentazione virtualizzata di cgroupfs per distribuzioni senza supporto per gli spazi dei nomi per cgroup. La versione 4.0 è classificata come rilascio con supporto a lungo termine, con aggiornamenti forniti per 5 anni
LXC è un runtime per l'esecuzione di contenitori sia di sistema che di applicazioni singole (OCI). Comprende la libreria liblxc, un insieme di utility (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), modelli per la creazione di contenitori e un insieme di binding per vari linguaggi di programmazione. L'isolamento avviene tramite i meccanismi nativi del kernel Linux. Per isolare processi, stack di rete ipc, uts, identificatori utente e punti di montaggio si utilizza il meccanismo dei namespace. I cgroups sono usati per limitare le risorse. Per ridurre i privilegi e limitare l'accesso vengono utilizzate funzionalità del kernel come profili Apparmor e SELinux, politiche Seccomp, Chroots (pivot_root) e capabilities. Il codice LXC è scritto in C e distribuito sotto licenza GPLv2.
LXD è un'estensione di LXC, CRIU e QEMU, utilizzata per la gestione centralizzata di contenitori e macchine virtuali su uno o più server. Se LXC è uno strumento a basso livello per la manipolazione di singoli contenitori, LXD è implementato come un processo in background che riceve richieste via rete attraverso REST API e consente di creare configurazioni scalabili distribuite su un cluster di più server.
Supporta vari backend di archiviazione (albero delle directory, ZFS, Btrfs, LVM), snapshot dello stato, migrazione live di contenitori in esecuzione da una macchina all'altra e strumenti per la gestione dello storage delle immagini. Il codice di LXD è scritto in Go e distribuito sotto licenza Apache 2.0.
Chiave in LXC 4.0:
- Il driver per lavorare con cgroup è stato completamente riscritto. È stata aggiunta la supporto per la gerarchia cgroup unificata (cgroup2). È stata introdotta la funzionalità del controller freezer, che consente di fermare l'esecuzione in cgroup e temporaneamente liberare alcune risorse (CPU, input/output e potenzialmente anche memoria) per eseguire altri compiti;
- È stata implementata un'infrastruttura per l'intercettazione delle chiamate di sistema;
- È stato aggiunto il supporto per il sottosistema del kernel 'pidfd', progettato per gestire la situazione del riutilizzo dei PID (pidfd è collegato a un processo specifico e non cambia, mentre il PID può essere associato a un altro processo dopo la conclusione del processo attuale associato a quel PID);
- Migliorata la creazione e la rimozione delle interfacce di rete, così come il loro spostamento tra i nomi degli spazi del sottosistema di rete;
- Implementata la possibilità di spostare le interfacce di rete wireless (nl80211) nei contenitori.
Chiave in LXD 4.0:
- È stato aggiunto il supporto per l'avvio non solo di contenitori, ma anche di macchine virtuali;
- Per segmentare i server LXD è stata proposta la concezione di progetti, che semplifica la gestione di gruppi di contenitori e macchine virtuali. Ogni progetto può includere il proprio insieme di contenitori, macchine virtuali, immagini, profili e aree di archiviazione. In relazione ai progetti, è possibile impostare limitazioni specifiche e modificare le configurazioni;
- È stato aggiunto il supporto per l'intercettazione delle chiamate di sistema per i contenitori;
- È stata implementata la creazione di backup degli ambienti e il ripristino da essi;
- È stata garantita la creazione automatizzata di snapshot degli ambienti e delle sezioni di archiviazione con la possibilità di impostare il tempo di esistenza dello snapshot;
- È stata aggiunta un'API per il monitoraggio dello stato della rete (lxc network info);
- Aggiunto supporto per , un filesystem virtuale per mappare i punti di mount con gli spazi dei nomi degli identificatori utente (user namespace);
- Sono stati proposti nuovi tipi di adattatori di rete "ipvlan" e "routed";
- È stato aggiunto un backend per l'utilizzo di archiviazioni basate su CephFS;
- Per i cluster è stata implementata la supporto alla replicazione delle immagini e alle configurazioni multi-architettura;
- È stata aggiunta la possibilità di gestione degli accessi basata sui ruoli (RBAC);
- È stato aggiunto il supporto per CGroup2;
- È stata aggiunta la possibilità di configurare l'indirizzo MAC e di determinare l'indirizzo sorgente per il NAT;
- È stata aggiunta un'API per gestire i vincoli nel DHCP (leases);
- È stato aggiunto il supporto per Nftables.
Fonte: opennet.ru
