Linux Container



I container su Linux rappresentano una soluzione potente e versatile per eseguire applicazioni in ambienti isolati, mantenendo il sistema operativo principale pulito e stabile. Sebbene il loro utilizzo sia spesso associato ai server e al cloud computing, i container possono essere estremamente utili anche a livello desktop. In questo sito esploreremo cosa sono i container, i loro vantaggi e vari esempi pratici di utilizzo a livello desktop.


Cosa sono i Container su Linux?


Un container è un’unità software che raggruppa un’applicazione con tutte le sue dipendenze, librerie e configurazioni in un ambiente isolato. A differenza delle macchine virtuali, i container condividono il kernel del sistema operativo host, rendendoli più leggeri e veloci da avviare.


Differenza tra Container e macchine Virtuali


Caratteristica Container Macchina Virtuale
Isolamento Parziale (condivide il kernel) Completo (ha un proprio OS)
Consumo di risorse Basso Alto
Tempo di avvio Secondi Minuti
Portabilità Alta Media

I container sono utilizzati principalmente per distribuire applicazioni in modo coerente su diversi ambienti e per migliorare la sicurezza e la gestione dei software.

All'interno di un container è possibile avviare anche una distribuzione di Linux in formato immagine OCI (Open Container Initiative). Questa rappresenta una soluzione potente e versatile per eseguire una distribuzione di Linux in un ambiente isolato, mantenendo il sistema operativo principale pulito e stabile.


Struttura di un Container


La containerizzazione è resa possibile da tre componenti principali:

  1. Kernel Namespaces: funzionalità del kernel Linux che permette l’isolamento tra container. Esistono diverse tipologie di kernel namespaces, ognuna con le proprie caratteristiche, come ad esempio:
    - Network namespace: attribuisce ad ogni container uno stack di rete differente (indirizzi IP, tabelle di routing, Firewall, ecc.)
    - PID namespace: attribuisce ad ogni container una lista processi isolata da altri container: sarà possibile avere 2 processi distinti con lo stesso process identifier (PID)
  2. Control Groups (cgroups): feature del kernel Linux che permette di gestire priorità e limiti in termini di utilizzo delle risorse (CPU, memoria RAM, disco, rete) dei vari container.
  3. Container Runtime: software responsabile della gestione del ciclo di vita dei container. Docker e Podman sicuramente sono le container runtime più famose.


Utilizzare Linux in ambito server con i container


Docker e podman generalmente servono per installare dei servizi che sono contenuti in un immagine già preconfigurata e isolata, così da non avere problemi di dipendenze e configurazioni da fare. Inoltre semplificano il deploy di tali servizi / applicazioni per l'utilizzatore. Quindi si utilizzeranno essenzialmente distribuzioni di Linux in ambito server, che non devono interagire con interfaccia grafica.

All'interno di un container è possibile avviare una distribuzione di Linux in formato immagine OCI (Open Container Initiative). Questa rappresenta una soluzione potente e versatile per eseguire una distribuzione di Linux in un ambiente isolato, mantenendo il sistema operativo principale pulito e stabile. Ciò è possibile grazie alla creazione di container utilizzando i Container Runtime: che sono software responsabili della gestione del ciclo di vita dei container.

Docker e Podman sicuramente sono le container runtime più famose che permettono di creare container più isolati dal sistema host (container senza radici), oppure creare container strettamente più integrati con l’host. All'interno di questi container potrete avviare la distribuzione di Linux di vostra scelta in formato immagine OCI (Open Container Initiative).

Vediamo qui le guide per utilizzare questi due Container Runtime:


Avviare le distribuzioni di linux nei container


Fino a qualche tempo fa chi voleva sperimentare con Linux in ambito desktop, doveva scaricare le distribuzioni di Linux e poi installarle su un PC una alla volta, oppure era costretto a utilizzare la virtualizzazione e le macchine virtuali. Ora possiamo installare ed eseguire diverse distribuzioni Linux direttamente dal terminale.

La soluzione più semplice, soprattutto se siete dei neofili e amate provare più distribuzioni e non volete perdervi in complicate configurazioni non potete non provare ad utilizzare Distrobox. Distrobox è un wrapper di Docker e Podman estremamente semplice da usare. Non potrete configurare nel dettaglio i container ma vi permette di creali con estrema facilità e di avviare con la stessa facilità la distribuzione di Linux di vostra scelta in formato immagine OCI (Open Container Initiative).

Ciascun container creato con Distrobox risulta strettamente integrato con l’host, consentendo la condivisione della directory home dell’utente, l’accesso alle unità di memorizzazione esterne, l’utilizzo di dispositivi USB, delle applicazioni dotate di interfaccia grafica (X11/Wayland) e dell’hardware multimediale.

Qui vi metto a disposizione una guida per imparare ad utilizzarlo: