LXC: caratteristiche, pro e contro dei Linux Container
Grazie alla sua facilità d'uso, i Linux Containers sono molto apprezzati e sono ormai diventati una componente importante della sicurezza IT.
L'omonima piattaforma container LXC (Linux Containers) viene utilizzata per isolare contemporaneamente più processi tra loro e dal resto del sistema.
Viene quindi generata un'immagine attraverso la virtualizzazione che consente a ogni contenitore di essere continuamente portabile e coerente dalla creazione alla fase di test e fino al funzionamento.
Pertanto, le singole applicazioni dispongono di un ambiente virtuale ma utilizzano comunque collettivamente il kernel del sistema host.
Cosa fornisce LXC (Linux Containers)?
La semplicità è sempre un vantaggio?
E quante macchine virtuali ci sono in un contenitore Linux?
Cos'è LXC (contenitori Linux)?
Il termine Linux Containers (LXC) si applica sia alle applicazioni virtualizzate nel kernel Linux , sia alla piattaforma container sottostante, sia alla tecnologia .
Questo dovrebbe essere tenuto presente quando si discute di piattaforme container alternative che utilizzano anche container Linux come tecnologia di base.
LXC è una piattaforma container open source che promette facilità d'uso e un'esperienza utente intuitiva e moderna , abbastanza atipica per i sistemi container, attraverso vari strumenti, linguaggi, modelli e librerie. Inoltre, l'ambiente di virtualizzazione può essere installato e utilizzato su tutte le attuali distribuzioni Linux.
L' idea della tecnologia Linux Containers è nata nel 2001 .
Inizialmente è stato implementato un ambiente isolato nell'ambito del progetto VServer.
Questa è stata la base per la creazione di diversi spazi dei nomi controllati in Linux e per quelli che oggi vengono chiamati Linux Containers.
Seguirono poi altre tecnologie come i cgroup (gruppi di controllo), che potevano controllare e limitare l'utilizzo delle risorse per un processo o un intero gruppo di processi.
Successivamente è arrivato systemd , un sistema di inizializzazione per la gestione degli spazi dei nomi e dei loro processi.
In pratica, LXC consente di sviluppare le applicazioni più rapidamente.
La tecnologia container è utile per il porting, la configurazione e l'isolamento.
I container mostrano i loro punti di forza anche quando si tratta di streaming di dati in tempo reale in quanto forniscono la scalabilità necessaria per le applicazioni.
I container Linux si adattano a un'infrastruttura e lo fanno in larga misura in modo indipendente, in modo da poter essere utilizzati localmente, nel cloud o in un ambiente ibrido.
Quali sono gli obiettivi e le caratteristiche di LXC?
A prima vista l'idea di base di LXC non sembra essere molto diversa dall'idea della virtualizzazione classica. Solo guardando il contesto più ampio le differenze diventano più evidenti.
Il principio più elementare è il seguente: i container funzionano a livello del sistema operativo , mentre le macchine virtuali funzionano a livello dell'hardware.
Ciò significa che i container dividono un sistema operativo e isolano i processi applicativi dal resto del sistema, mentre la virtualizzazione classica consente a più sistemi operativi di essere eseguiti contemporaneamente su un sistema.
I container Linux utilizzano meno risorse di una macchina virtuale e dispongono anche di un'interfaccia predefinita da cui è possibile gestire più contenitori contemporaneamente.
Una piattaforma con LXC può anche essere organizzata su più cloud.
Ciò fornisce portabilità e garantisce che le applicazioni eseguite correttamente sul sistema dello sviluppatore funzioneranno correttamente anche su ogni altro sistema.
Le applicazioni più grandi possono essere avviate o arrestate e le relative variabili di ambiente possono anche essere modificate dall'interfaccia dei container Linux.
Per riassumere, l'obiettivo di LXC è creare un ambiente che si avvicini il più possibile a un'installazione Linux standard senza la necessità di un kernel separato .
L'attuale piattaforma Linux Containers utilizza le seguenti funzionalità del kernel per "racchiudere" applicazioni e processi in contenitori:
Kernel namespaces (ipc, uts, mount, pid, network and user)
AppArmor and SELinux-Profile
Seccomp policies
Chroots (using pivot_root)
Kernel capabilities
cgroups (control groups)
sono pensati per essere compatti. In quanto tali, sono composti solo da pochi componenti separati:
the liblxc library
several API language bindings:
python3 (long-term support in 2.0.x)
lua (long-term support in 2.0.x)
an array of standard tools to manage the containers
distribution templates
Come funziona LXC ?
L'isolamento e la virtualizzazione sono importanti perché aiutano a gestire le risorse e gli aspetti di sicurezza nel modo più efficiente possibile .
Ad esempio, facilitano il monitoraggio degli errori nel sistema, che spesso non hanno nulla a che fare con le applicazioni appena sviluppate.
Ma come funziona LXC? Oppure, per dirla in altro modo: come funzionano i Linux Container?
Il modo più semplice e sensato per utilizzare i contenitori Linux è collegare ciascun contenitore a un processo, consentendo il controllo completo.
Per ogni processo, sono particolarmente importanti gli spazi dei nomi che rendono disponibili le risorse per uno o più processi che utilizzano gli stessi spazi dei nomi.
I processi fungono anche da controlli di accesso per proteggere i contenitori.
Per utilizzare un ambiente LXC, le caratteristiche e le relative funzioni devono essere chiare.
I cgroup (gruppi di controllo del kernel) limitano e isolano le risorse del processo, come CPU, I/O, memoria e risorse di rete.
Inoltre, è possibile gestire, monitorare, assegnare priorità e modificare il contenuto di un gruppo di controllo.
Le funzioni sono facilmente comprensibili, il che ha il vantaggio di rendere una piattaforma LXC molto adatta ai principianti. Presenta però anche alcuni svantaggi che verranno spiegati nella sezione seguente.
Una panoramica dei pro e dei contro dei container Linux
La facilità d'uso dei Linux Containers è il suo più grande vantaggio rispetto alle classiche tecniche di virtualizzazione. Tuttavia, l’ incredibile diffusione di LXC, un ecosistema virtualmente onnicomprensivo e dotato di strumenti innovativi , è in gran parte da attribuire alla piattaforma Docker che ha dato vita ai Linux Containers. Rispetto ad altri sistemi di container come rkt, OpenVZ e Cloud Foundry Garden, che sono significativamente più limitati nel loro utilizzo, LXC beneficia dei suoi stretti legami con il precursore delle piattaforme di container.
Un amministratore di sistema che ha già lavorato con un metodo di virtualizzazione basato su hypervisor come Hyper-V non avrà problemi con LXC.
L' intera configurazione , compresa la creazione di modelli di contenitori e la loro distribuzione, la configurazione del sistema operativo e la creazione di connessioni, nonché la distribuzione delle applicazioni, rimane la stessa .
Tutti gli script e i flussi di lavoro scritti per le macchine virtuali possono essere utilizzati anche per i contenitori Linux.
Pertanto, agli sviluppatori non vengono fornite soluzioni o strumenti nuovi e personalizzati, ma possono continuare a lavorare senza problemi in un ambiente familiare con i propri script e flussi di lavoro di automazione.
Uno dei principali svantaggi di LXC diventa molto evidente quando si tratta di gestione della memoria : anche se sono supportati vari backend di memoria (Ivm, overlayfs, zfs e btrfs), tutto viene salvato su rootfs per impostazione predefinita.
Non è possibile registrare le immagini.
A questo proposito, altre piattaforme di contenitori offrono soluzioni più intelligenti e flessibili, sia per il salvataggio dei contenitori che per la gestione delle immagini.
Quando viene utilizzato LXC ?
LXC è un progetto open source supportato finanziariamente da Canonical , la società dietro la distribuzione Linux Ubuntu.
Il maggiore supporto, tuttavia, viene dalla comunità degli utenti che sviluppa collettivamente versioni stabili e aggiornamenti di sicurezza e porta avanti anche il progetto.
Diverse edizioni di LXC ora includono anche supporto continuo e aggiornamenti di sicurezza regolari.
Le altre versioni vengono mantenute nel miglior modo possibile, solitamente fino a quando non viene visualizzata una versione più nuova e più stabile.
Nella maggior parte dei casi i Linux Containers vengono utilizzati come tecnologia container di supporto e supplementare , il che non è insolito in questo campo poiché, a differenza delle macchine virtuali, i container sono ancora una tecnologia molto nuova. Tuttavia, dovresti tenere presente che i fornitori di tecnologia per container sono in costante crescita, insieme all’ecosistema attorno a tale tecnologia.
LXC è attualmente un'alternativa del tutto valida alle applicazioni tradizionali esistenti, specificamente orientata agli amministratori di VM.
La transizione da una macchina virtuale a una tecnologia container è più semplice con i container Linux che con altre tecnologie container.
Quali sono le alternative ai Container Linux ?
L'alternativa LXC più popolare è Docker .
Questa piattaforma, basata su Linux Containers, è stata continuamente sviluppata negli ultimi anni e ora può essere eseguita anche su sistemi Windows .
Pertanto, i più grandi fornitori di servizi cloud, come Google, IBM, AWS e Azure, sono ora in grado di offrire supporto Docker nativo.
Una nota alternativa container (Linux) per la virtualizzazione di un server completo è OpenVZ .
Come LXC, OpenVZ utilizza il kernel del sistema operativo host e mette a disposizione degli utenti il server virtuale in un ambiente isolato.
KVM è una tecnologia di virtualizzazione open source già integrata in Linux. KVM sta per “ Macchina virtuale basata sul kernel ”.
Può essere utilizzato per convertire Linux in un hypervisor, consentendo al computer host di eseguire più ambienti isolati.
Kubernetes proviene originariamente da Google, che è stato uno dei primi sostenitori della tecnologia Linux Containers.
Questa piattaforma open source automatizza le attività dei contenitori Linux.
Interi gruppi di host che eseguono i contenitori sono assemblati in cluster, rendendo molto semplice gestirli tutti.
Quando si lavora con LXC, sarà impossibile evitare il LXD strettamente correlato .
È difficile differenziare questi due termini e tecnologie l’uno dall’altro.
LXD è un ulteriore sviluppo di LXC e contiene anche un demone di sistema.