La società Canonical ha pubblicato il rilascio dello strumento per l'organizzazione del lavoro in contenitori isolati LXC 5.0, fornendo un runtime adatto sia per l'avvio di contenitori con un ambiente di sistema completo, simile a macchine virtuali, sia per l'esecuzione di contenitori non privilegiati di singole applicazioni (OCI). LXC è considerato uno strumento a basso livello che opera a livello di singoli contenitori. Per la gestione centralizzata dei contenitori distribuiti in un cluster di più server, si sviluppa il sistema LXD basato su LXC. La ramificazione LXC 5.0 è assegnata alle versioni con supporto a lungo termine, per le quali gli aggiornamenti vengono forniti per un periodo di 5 anni. Il codice LXC è scritto in linguaggio C e distribuito con licenza GPLv2.
Il pacchetto di LXC include la libreria liblxc, un insieme di utility (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), modelli per costruire contenitori e un insieme di binding per vari linguaggi di programmazione. L'isolamento avviene tramite i meccanismi standard del kernel Linux. Per isolare processi, stack di rete ipc, uts, identificatori utente e punti di montaggio viene utilizzato il meccanismo degli spazi dei nomi (namespaces). Per limitare le risorse si applicano i cgroups. 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.
Variazioni principali:
- È avvenuto il passaggio da autotools al sistema di build Meson, che viene utilizzato anche per la compilazione di progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK.
- Sono state aggiunte nuove opzioni per la configurazione dei cgroup — lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot e lxc.cgroup.dir.container.inner, che consentono di definire esplicitamente i percorsi cgroup per il contenitore, il processo di monitoraggio e le gerarchie cgroup annidate.
- È stata aggiunta la supporto per i namespace di tempo (time namespaces) per associare al contenitore uno stato separato degli orologi di sistema, consentendo l'uso di un orario differente da quello di sistema all'interno del contenitore. Per la configurazione sono state proposte le opzioni lxc.time.offset.boot e lxc.time.offset.monotonic, che permettono di definire per il contenitore uno spostamento rispetto agli orologi di sistema principali.
- Per gli adattatori ethernet virtuali (Veth) è stata implementata la supporto per VLAN. Le opzioni disponibili per gestire le VLAN sono: veth.vlan.id per impostare la VLAN principale e veth.vlan.tagged.id per collegare VLAN taggate aggiuntive.
- Per gli adattatori ethernet virtuali è stata aggiunta la possibilità di configurare le dimensioni delle code di ricezione e trasmissione attraverso le nuove opzioni veth.n_rxqueues e veth.n_txqueues.
Fonte: opennet.ru
