Come usare Docker su una Raspberry Pi e gestire le app con i container

Docker su Raspberry Pi per gestire qualunque applicazione senza installarle a livello di sistema operativo.

Lo dicevamo anni fa che la containerizzazione delle app sarebbe stata utilizzata a tutti i livelli. Docker è uno strumento opensource che automatizza la distribuzione e la gestione delle applicazioni all’interno di contenitori software (“container“) con prestazioni elevate rispetto all’utilizzo e alla manutenzione di una macchina virtuale: Docker, cos’è e come funziona la containerizzazione delle applicazioni.

Con Docker le applicazioni possono funzionare in un ambiente isolato, separate l’una dall’altra e possono essere installate, rimosse o clonate (duplicate) con uno sforzo minimo.

Docker diventa quindi una soluzione particolarmente interessante per i possessori di Raspberry Pi perché consente di non “sporcare” l’installazione di Raspberry Pi OS con la possibilità di installare e rimuovere in pochi secondi le varie applicazioni. I container Docker sono tra l’altro molto più leggeri rispetto alle tradizionali macchine virtuali quindi rappresentano una soluzione ideale per l’utilizzo su Raspberry Pi.

Nel seguito vediamo come può essere installato Docker su una Raspberry Pi e come diventi un’operazione particolarmente semplice l’installazione e la gestione di applicazioni containerizzate con l’interfaccia web di Portainer.

Si dà per scontato di aver già proceduto all’installazione del sistema operativo Raspberry Pi OS all’interno della scheda microSD collegata al single-board computer: Raspberry Pi: come ripristinarne il funzionamento e creare un’immagine della scheda SD.

Come installare Docker sulla Raspberry Pi

Nel nostro caso abbiamo usato una Raspberry Pi 4 per installarvi l’ultima versione di Docker. Tra l’altro abbiamo usato le indicazioni dell’articolo Raspberry Pi 4: come usarla senza monitor e tastiera per gestire la Raspberry Pi 4 senza monitor e periferiche di input direttamente collegate.

Per installare Docker si possono impartire alcuni semplici comandi nella finestra del terminale o via SSH:

sudo apt-get update && sudo apt-get -y upgrade
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Il primo comando provvede ad aggiornare il sistema operativo mentre i successivi due permettono di scaricare e avviare lo script per l’installazione di Docker.

Al termine dell’installazione verrà visualizzato il numero di versione di Docker. Digitando il comando seguente si può aggiungere l’utente predefinito (pi) tra quelli autorizzati ad avviare i container Docker (solo gli utenti root, dotati dei privilegi amministrativi, possono farlo):

sudo usermod -aG docker pi

Suggeriamo quindi di riavviare la Raspberry Pi quindi di digitare i comandi successivi per verificare che tutto funzioni (restituiscono il numero di versione di Docker e alcune informazioni aggiuntive):

sudo reboot
docker version
docker info

Infine digitando docker run hello-world si può scaricare e avviare il container di test “Hello World“. Dopo qualche istante di attesa (il tempo necessario per effettuare il download del container e caricarlo), la comparsa del messaggio “Hello from Docker!” conferma che tutto funziona correttamente.

Gestire i container Docker via web collegandosi alla Raspberry Pi da browser

Un ottimo strumento per gestire i container Docker tramite una comoda interfaccia web consiste nell’utilizzo di Portainer, uno strumento che abbiamo già presentato in passato (I vantaggi dell’utilizzo di container Docker e cluster Kubernetes sul cloud) e che permette di scaricare dal Docker Hub, ovvero lo store online dei container, le “immagini” dei componenti software che servono e che si vogliono usare in questo caso sulla Raspberry Pi.

Per installare il tool di gestione Portainer basta digitare quanto segue nella finestra del terminale di Raspberry Pi OS o nella finestra di SSH:

docker volume create portainer_data

docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

I due comandi consentono di creare un’unità virtuale che ospiterà tutti i dati di Portainer e di installare il container corrispondente.

Al termine dell’installazione basterà digitare nel browser web, da un dispositivo client collegato alla stessa rete usata dalla Raspberry Pi, http://192.168.1.40:9000 dove 192.168.1.40 va sostituito con l’indirizzo IP privato assegnato alla scheda Raspberry.

Alla comparsa della schermata di Portainer bisognerà indicare una password robusta da assegnare all’account utente admin.

Cliccando su Local quindi su Connect si potrà configurare Portainer come strumento per l’installazione e la gestione rapida dei container Docker sulla Raspberry Pi locale.

Cliccando su Local nel pannello di destra quindi su Containers (nella colonna a sinistra) sarà a questo punto possibile installare qualunque container disponibile sul Docker Hub a questo indirizzo a patto che sia compatibile con l’architettura ARM. A titolo esemplificativo i container realizzati per i sistemi x86/x64 e i386 non possono essere installati e utilizzati sulla Raspberry Pi.

Per avviare l’installazione di un container (procedura “pull”) basterà specificarne un nome nel campo Name (altrimenti verrà generato in modo pseudocasuale) quindi indicarne la denominazione esatta tratta dal Docker Hub nella casella Image.

Bisognerà anche valutare se il container della esporre delle porte sull’IP della Raspberry Pi.
Ad esempio, se si decidesse di installare WordPress per effettuare test e lavorare su un ambiente veloce e affidabile prima di spostare il sito sul cloud, si può cliccare su Publish a new network port e indicare 80 in entrambi i campi Host e Container.

Così facendo il traffico in arrivo sulla porta 80 sull’IP della Raspberry Pi sarà indirizzato sulla porta 80 del container. In questo caso digitando http://192.168.1.40 si aprirà la routine di configurazione di WordPress.

Cliccando sull’icona Exec console nella lista dei container su Portainer si potrà accedere da web alla finestra del terminale Linux dello specifico container.

Agendo sulla sezione Containers di Portainer potrà essere creato un nuovo container, aggiunti di nuovi, rimossi quelli presenti, arrestati e riavviati oltre che clonati.

Ti consigliamo anche

Link copiato negli appunti