LXC (abbreviazione di Linux Containers) è un ambiente di virtualizzazione a container, che opera a livello del sistema operativo e permette di eseguire diversi ambienti Linux virtuali isolati tra loro (container) su una singola macchina reale avente il kernel Linux.
Panoramica È simile ad altri sistemi di virtualizzazione OS-level presenti in Linux, come OpenVZ e Linux-VServer, ed in altri sistemi operativi Unix, esistenti da tempo: le jail di FreeBSD, le workload partitions AIX e i container di Solaris.
Non si tratta perciò di un sistema di virtualizzazione vero e proprio, che emula un hardware basandosi su hypervisor, e supporta solo la virtualizzazione di sistemi Linux. I container eseguono direttamente istruzioni sulla CPU senza necessitare di meccanismi di emulazione o compilazione just in time, il che comporta un overhead ("carico aggiuntivo") e un utilizzo di risorse più elevato. Oltre che per emulare un intero sistema, LXC può essere utilizzato anche per far girare isolata dal resto del sistema una singola applicazione, differenziando i container di tipo "sistema" da quelli di tipo "applicazione". Diverse delle risorse utilizzate dai container restano in realtà condivise, visto che tutti utilizzano lo stesso kernel, ad esempio librerie di sistema.
LXC e il kernel Linux Il kernel Linux fornisce due funzionalità fondamentali per LXC cgroups, che permette di gestire limiti e priorità di utilizzo delle risorse (CPU, memoria, accesso alla memoria, accessi ai dischi, rete) senza dover utilizzare una vera e propria macchina virtuale; l'isolamento dei namespace (o spazio dei nomi), che permette di isolare tra loro gruppi di processi, affinché non siano loro visibili risorse utilizzate da altri gruppi di processi, come alberi di processi, risorse di rete, user ID e file system montati.
Tali funzionalità sono fornite dal kernel vanilla; la funzionalità cgroups è ad esempio implementata dalla versione 2.6.24. Ciò permette a LXC di poter essere utilizzato senza dover modificare il kernel con patch, come invece accade per soluzioni simili (es. OpenVZ).
PaaS e Docker I container sono molto utilizzati nei servizi di cloud computing di tipo Platform as a service (PaaS). Uno degli strumenti che permette di pacchettizzare e distribuire un'applicazione e le sue dipendenze tramite container ed utilizza LXC è il software libero Docker.
Problemi di sicurezza In origine LXC era visibilmente meno sicuro di altre soluzioni simili come OpenVZ. Infatti fino al kernel Linux 3.8 l'utente root di un sistema guest poteva eseguire a piacere codice direttamente sul sistema host coi privilegi massimi, similmente a quanto accade con chroot. Dalla versione 1.0 i container possono venire eseguiti con i privilegi di utente normale sull'host. Tali container hanno dei limiti, in quanto non possono accedere direttamente all'hardware. In ogni caso anche il livello di sicurezza dei container che vengono fatti girare con i privilegi di root è aumentato, in presenza di una configurazione adeguata.
Note
Voci correlate Virtualizzazione Linux (kernel)
Altri progetti
Collegamenti esterni