Installare Docker Engine su Raspberry PI 4 Model B 8 GB

Raspberry pi 4 8 GB + Docker Engine

In questo articolo ti spiego come puoi installare Docker Engine sul tuo Raspberry Pi e come puoi iniziare a gestire Docker, grazie all’uso di Portainer.io.

Sin dai primi minuti successivi alla notizia del lancio della nuova Versione con ben 8 GB di RAM, ho notato l’accendersi del dibattito: Cosa ci faccio con un Raspberry con 8 GB di RAM? Davvero ci serve?

Il dibattito e’ sicuramente fondato, come sono fondate le accuse ai fratelli minori: il Raspberry PI 4 model B non ha un supporto software adeguato.

Vero, come e’ vero che con il tempo qualcosa uscira’. Ma forse qualcosa possiamo farlo gia’ da adesso.

Un Docker Engine “domestico”

Hai mai provato Docker Engine?

L’impiego del raspberry in ambito DIY e della domotica e’ senza dubbio senza limiti: puoi pensare a qualsiasi impiego: controller, server VPN, sensori.

Il fattore che accomuna ciascuna di queste possibilità e’ uno: necessiterai di installare software che dipenderà da un certo numero di librerie, a cui dovrai prestare attenzione quando deciderai di aggiornarne la versione.

E se sullo stesso Rasbian vorrai installare nativamente piu’ di un software, potresti trovarti dinanzi a conflitti nell’uso di librerie.

Una Soluzione? Installare Docker Engine su Raspberry PI e creare un container per ciascuno dei software, isolando le librerie, ma continuando a condividere le risorse Host.

Nella seguente guida, ti riporto anche la configurazione di Portainer una Dashboard di Gestione con interfaccia Web: semplice ed efficace, soprattutto per chi non ha confidenza con la shell.

Di cosa hai bisogno per seguire questa guida?

In questa guida ti mostro come usare il Raspberry Pi 4 Model B con 8 GB di RAM. Puoi acquistarlo dal seguente link che ti porta allo store di Melopero Electronics su Amazon:

Store di Melopero Electronic su Amazon

Aggiornamento Dicembre 2020

Ho deciso di revisionare la guida correggendo alcune inesattezze e cercando di snellire il processo.

Installare Docker Engine su Raspberry PI e Raspbian

Per l’installazione dovrai usare la Shell dei comandi, riassumo in questi semplici Step le operazioni che dovrai compiere:

Step Preliminare: rimuovere le altre installazioni:

sudo apt-get remove docker docker-engine docker.io containerd runc 

Step 1: scaricare lo script get-docker.sh per raspbian

curl -fsSL https://get.docker.com -o get-docker.sh

Step 2: esegui lo script get-docker.sh (come root)

sudo sh get-docker.sh

Step 3: fai in modo che Docker possa essere avviato dall’utente pi

sudo usermod -aG docker pi

Step 5: fai partire Docker in automatico

Per consentire a Docker Engine di avviarsi al Boot del tuo raspberry, puoi lanciare il comando:

sudo systemctl enable docker

Step 6: avvia Docker

sudo systemctl start docker

A questo punto avrai terminato l’installazione di Docker Engine su Raspberry PI. Per verificare che l’installazione sia stata completata ed il servizio sia attivo, digita il comando:

docker info

Dovrei notare una schermata di informazioni come la seguente:

Esegui il comando docker info

Gestire Docker Engine via Web con Portainer

A questo punto della guida, avrai concluso il processo: installare Docker engine su Raspberry PI. Come ti anticipavo, Portainer.io consente la completa gestione di Docker Engine (locali, remoti e in cluster), mediante una comoda interfaccia Web.

Con Portainer puoi fare tutto quello che Docker permette, come ad esempio:

  • Creare Container
  • Gestire le immagini
  • Gestire lo stato dei Container
  • Controllare l’uso delle risorse Host

Installazione di Portainer.io su Docker

Avviare Portainer sul nostro Server Docker Raspberry PI e’ molto semplice; ti basta eseguire il seguente comando in Shell, dopo aver avviato il docker engine:

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

Il primo comando creera’ il volume “portainer_data“, un drive virtuale che conterra’ i dati di Portainer.

Il secondo comando costruira’ il container, generato a partire dall’imagine portainer/portainer, il cui nome e’ “portainer“.

A questo punto, lascia la shell e inizia a navigare con il tuo browser a questo URL: (fai attenzione a sostituire xxx.xxx.xxx.xxx con l’IP LAN del tuo Raspberry PI).

http://xxx.xxx.xxx.xxx:9000/

Visualizzerai la prima schermata dove ti sarà richiesto di impostare i dati dell’ utente “admin“: impostalo scegliendo Username e una password e ricordati i dati in futuro.

Portainer - Seleziona Username e Password

Non appena avrai creato il tuo utente admin, sarai portato alla selezione della connessione. Portainer e’ pensato per essere collegato a nodi “locali” o a cluster Swarm. Nel nostro caso ci limiteremo a collegarlo al Docker engine installato sul raspberry: seleziona local e clicca su “connect“.

Portainer - Selezione connessioni

A questo punto avrai completato con successo l’installazione e l’avvio di Portainer. Ti spiego brevemente cosa puoi farci.

Definire ed avviare un container

Nel seguente esempio, avviero’ un container con una instanza di Mosquitto-MQTT, molto utile per far colloquiare software eterognei.

Come prima cosa, dall’ interfaccia web di Portainer, seleziona il tab “Containers” e poi clicca il pulsante “+ Add Container“. Si aprira’ la seguente finestra:

Portainer - Aggiungi Container

Compila i campi del form come segue:

  • Name: specifica il nome che vuoi dare al container, io scelgo test-mqtt
  • Registry: lascia DockerHub
  • Image: specifica il nome dell’immagine di DockerHub, io soecifico eclipse-mosquitto
  • Manual network port publishing: specifica il mapping tra le porte Host e le porte Container. Io ho specificato 1883:1883 e 9001:9001

Specificate quest impostazioni, puoi cliccare su “Deploy the container” che eseguirà appunto la creazione (deploy) del container basato sull’ immagine selezionata e le opzioni specificate nel form.

Per verificare lo stato corrente del Container, ma anche per gestirne lo stato futuro, puoi usare la schermata “Containers” e usare i comandi di Stop, Kill, Start, Restart ecc.ecc.

Portainer, lista containers

Coclusioni: come va il Raspberry PI 4 Model B con 8 GB di RAM

Questa guida e’ una introduzione al mondo Docker, l’ho scritta come pietra miliare di una serie che mi piacerebbe avviare sul blog.

L’impiego del Raspberry PI 4 Model B con ben 8 GB di RAM e’ un esperimento. Uscito praticamente la scorsa settimana, da subito ho pensato ad un probabile utilizzo di questa quantità di RAM e, il primo pensiero, mi e’ andato su proprio su Docker Engine.

Avere a disposizione un ambiente di virtualizzazione, seppur a Container, apre nuovi scenari, come ad esempio la creazione di stack per la domotica:

Metti caso volessi crearti il tuo stack per la domotica, ti servirebbero, ad esempio:

  • Home Assistant
  • Mosquitto MQTT
  • Influx DB
  • ecc ecc

Avere ogni applicazione in Container isolati tra loro, ma interconnessi grazie alla rete di Docker, ti permette di accedere ad una soluzione molto scalabile.

Certo, l’installazione di questi software e’ anche possibile in modo nativo su Raspbian, ma avere a disposizione Container significa poter provare una nuova versione del software, senza compromettere nulla e con la possibilità di tornare indietro in caso di problemi.

Sulle performances generali non posso dirti ancora nulla, ho bisogno di un po di tempo prima di dare giudizio. Aggiornero’ l’articolo appena avro’ dati a disposizione.

Happy coding! 😉

 

Una risposta.

  1. Graziano ha detto:

    ciao ho un problema su raspberry pi 4 ho installato rasoi os openmediavault con Cocker e portainer funzionanti, ma quando cerco di aggiungere un container (es. plex ) pur compilando correttamente i campi seguendo questa guida (https://pcmac.biz/plex-media-server-on-openmediavault-5-raspberry-pi-4/) quando genero il container mi da errore ” NO SOUCH IMAGE ghcr.io/linuxserver/plex … ho anche ricaricato l’ endpoint ma sempre lo stesso..
    grazie in anticipo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.