Come integrare qualsiasi distribuzione Linux all'interno di un terminale con Distrobox
Distrobox è uno strumento gratuito e open source che ci consente di integrare gli utenti delle distribuzioni Linux. Sotto il cofano utilizza Docker o Podman per creare contenitori e li integra con l'host condividendo l'accesso al server grafico, alla directory HOME dell'utente e ai dispositivi USB. In questo tutorial vediamo come installare e utilizzare Distrobox sulle distribuzioni Linux più utilizzate.
In questo tutorial imparerai:
- Come installare Distrobox sulle distribuzioni Linux più utilizzate
- Come integrare una distribuzione utilizzando Distrobox
- Come inserire e utilizzare un contenitore Distrobox
- Come esportare le applicazioni da un contenitore
- Come elencare, arrestare e rimuovere i contenitori esistenti
introduzione
Distrobox funziona in modo simile a toolbox, ma è compatibile con una gamma più ampia di distribuzioni (puoi trovare l'elenco effettivo su GitHub) e può utilizzare sia Podman che Docker dietro le quinte, mentre toolbox supporta solo il primo. Distrobox mira a raggiungere una perfetta integrazione dei contenitori con il sistema host: lo stack grafico, la directory HOME dell'utente e i dispositivi di archiviazione USB sono infatti condivisi, per impostazione predefinita, con i contenitori. Per questo motivo, se l’isolamento e la sicurezza sono obiettivi primari, Distrobox non è lo strumento appropriato.
Installazione
Tutte le distribuzioni Linux più utilizzate includono Distrobox nei propri repository ufficiali, quindi installarlo è solo questione di utilizzare l'apposito gestore di pacchetti. Ecco i comandi esatti che vogliamo utilizzare:
Iniziare
Il modo più semplice per creare e integrare una distribuzione con Distrobox è utilizzare il comando crea
senza alcuna opzione o argomento:
$ distrobox create
Quando richiamato in questo modo, Distrobox crea un contenitore utilizzando l'immagine predefinita, che viene specificata tramite la variabile container_image_default
nel file di configurazione di Distrobox; questo, nella maggior parte dei casi, equivale alla distribuzione dell'host. Per utilizzare una distribuzione specifica (e facoltativamente una versione di rilascio) come destinazione, passiamo il suo nome come argomento all'opzione -i
(abbreviazione di --image
). Per creare un contenitore basato su Archlinux, ad esempio, eseguiremmo:
$ distrobox create -i archlinux
Se l'immagine della distribuzione di destinazione non esiste localmente, Distrobox ci chiederà se vogliamo scaricarla:
Image archlinux not found.
Do you want to pull the image now? [Y/n]: y
Per evitare richieste interattive come quella sopra, possiamo aggiungere l'opzione -Y
(--yes
) al comando. Una volta completato il download, Distrobox creerà un contenitore basato sull'immagine, nominandolo, per impostazione predefinita, con il nome della distribuzione stessa (possiamo specificare un nome alternativo con l'opzione -n
).
Quando creiamo un contenitore, abbiamo la possibilità di specificare un elenco di pacchetti aggiuntivi che dovrebbero essere installati, utilizzando l'opzione --additional-packages
. Nell'esempio seguente, creiamo un contenitore basato su Archlinux e specifichiamo che vogliamo installare i pacchetti git
e vim
:
$ distrobox create -i archlinux --additional-packages "vim git"
Specificare una HOME alternativa per il contenitore
Come abbiamo già detto, i contenitori creati con Distrobox condividono la directory HOME con l'utente che lancia i comandi di Distrobox. Ciò significa che un programma in esecuzione all'interno del contenitore potrebbe ingombrarlo con i propri file di configurazione. Per evitare ciò, possiamo specificare una HOME alternativa per il contenitore, utilizzando l'opzione -H
(--home
). Ecco un esempio:
$ distrobox create -i archlinux -H ~/container-home
La directory di destinazione verrà creata automaticamente se non esiste.
Entrando nel contenitore
Una volta che un contenitore è pronto, per iniziare ad usarlo, utilizziamo il comando enter
, passando il suo nome come argomento. Per inserire un contenitore denominato "archlinux", eseguiremo:
$ distrobox enter archlinux
La prima volta che entriamo in un contenitore, Distrobox esegue alcune operazioni preliminari. Una volta completata la configurazione del contenitore, il prompt della shell cambierà, per riflettere il fatto che stiamo lavorando nell'ambiente del contenitore:
📦[doc@archlinux ~]$
Ora possiamo eseguire comandi proprio come se stessimo utilizzando il sistema in modo nativo. Poiché in questo caso la distribuzione di destinazione è Archlinux, per sincronizzare i repository eseguiremo:
📦[doc@archlinux ~]$ sudo pacman -Sy
Poiché il contenitore ha accesso allo stack grafico del sistema host, possiamo installare e utilizzare sia la riga di comando che le applicazioni grafiche al suo interno. Per installare "code" (la versione open source dell'editor VScode), ad esempio, eseguiremmo:
📦[doc@debian-bullseye ~]$ sudo pacman -S code
Una volta installata l'applicazione, possiamo avviarla dalla riga di comando:
📦[doc@archlinux ~]$ code
In alternativa all'inserimento manuale del contenitore ogni volta che vogliamo eseguire un comando al suo interno, possiamo utilizzare la seguente scorciatoia:
$ distrobox enter archlinux -- code
Esportazione di un'applicazione
Nell'esempio precedente abbiamo visto quanto sia semplice installare e lanciare un'applicazione all'interno di un container creato con Distrobox. Per meglio integrare un'applicazione nel sistema ospite, invece, possiamo “esportarla”.
Nell’esempio precedente abbiamo installato l’editor “codice”, ma siamo stati costretti a eseguirlo dalla riga di comando, poiché il launcher del desktop non appariva nel menu “applicazioni” del sistema host. Per risolvere questo problema possiamo “esportare” l'applicazione con il comando distrobox-export
, che deve essere eseguito all'interno del contenitore.
Per esportare l'editor "codice", eseguiremmo:
$ distrobox enter archlinux -- distrobox-export --app code
Dopo alcuni secondi, dovremmo trovare il launcher delle applicazioni nel menu host:
Per annullare l'esportazione di un'applicazione, aggiungiamo l'opzione --delete
al comando distrobox-export
. Per eliminare il programma di avvio del "codice" dal sistema host, eseguiremo:
$ distrobox enter archlinux -- distrobox-export --app code --delete
Gestione dei contenitori distrobox
Per elencare i contenitori creati con Distrobox possiamo usare il comando list
:
$ distrobox list
In questo caso, come previsto, esiste un solo contenitore:
ID | NAME | STATUS | IMAGE
1989f0686c1f | archlinux | Up 29 minutes | docker.io/library/archlinux:latest
Come possiamo vedere dall'output del comando, il contenitore è attualmente in esecuzione. Per fermarlo utilizziamo il comando stop
:
$ distrobox stop archlinux
Infine, per rimuovere il contenitore, utilizziamo il comando rm
:
$ distrobox rm archlinux
Conclusioni
Distrobox è un'applicazione gratuita e open source che ci consente di integrare un sistema host con l'area utente delle distribuzioni Linux supportate, utilizzando contenitori e affidandosi a Docker o Podman sotto il cofano. In questo tutorial abbiamo visto come installare Distrobox su alcune delle distribuzioni Linux più utilizzate, come creare ed inserire contenitori e come eseguire comandi al loro interno. Abbiamo visto anche come esportare le applicazioni container nel sistema host e, infine, come elencare, fermare e rimuovere i container creati con Distrobox.