In passato abbiamo parlato spesso del sistema di container Docker e di quanto siano utili in diversi contesti. L'implementazione di Docker all'interno della propria configurazione semplifica i setting degli applicativi e agevola il deploy del software in ambienti anche molto diversi tra di loro.
Questo perché tramite un container è possibile far operare tutta una serie di programmi, o addirittura un sistema operativo completo, in un ambiente completamente isolato. Il tutto senza avere le rigidità delle più tradizionali macchine virtuali. Questi sono i due principali motivi che hanno portato al successo di Docker e degli altri sistemi di container open source.
In svariate guide vi abbiamo descritto come realizzare dei progetti tramite Docker. Oggi invece vogliamo focalizzarci su un aspetto in particolare dei container: la loro manutenzione.
Cosa è Watchtower
Per un utente tradizionale è possibile gestire manualmente l'aggiornamento di qualche container. Tuttavia la questione cambia quando il numero di istanze aumenta. Amministrare decine di Docker container non è sempre agilissimo ed il loro aggiornamento può richiedere molto tempo, soprattutto se non si utilizzano gli strumenti appropriati.
Ecco perché negli anni sono nati diversi progetti dedicati all'amministrazione e all'aggiornamento automatizzato dei container. Come Watchtower.
Watchtower è un tool open source che consente di monitorare le istanze Docker selezionate dall'utente, cosi da capire se è stata rilasciata una nuova release. Va quindi ad automatizzare il processo di upgrade facilitando il workflow dell'utente che non deve più eseguire il tutto manualmente. Può affidarsi invece a questa comoda utility che fa tutto da sola.
Ovviamente è possibile impostare Watchtower cosi che esegua il self-update delle sole istanze che desideriamo, evitando di incappare in qualche instabilità dovuta ai bug che possono annidarsi all'interno delle release più recenti, e quindi meno rodate, dei Docker container che stiamo utilizzando.
La guida di oggi illustrerà come installare, configurare ed eseguire Watchtower su Raspberry Pi e più nello specifico in un ambiente basato su Linux.
Dotazione hardware
Watchtower non necessità di hardware di ultima generazione per essere eseguito, tuttavia se dovete gestire tanti container Docker vi consigliamo di affidarvi all'ultima edizione della board ARM, con il massimo quantitativo di RAM disponibile.
Inoltre sono necessari: una memoria flash microSD da 128GB, per da ospitare la distribuzione ed i container ed il sistema operativo, un cavo di alimentazione ed ethernet. Oltretutto, se non desiderate configurare il device tramite SSH dovrete dotarvi di mouse, tastiera e monitor oltre che di un cavo HDMI.
Installazione di Raspberry Pi OS
Come sistema operativo, per questa guida abbiamo scelto Raspberry Pi OS. Si tratta della distribuzione Linux di riferimento per la board ARM. Tuttavia non siete obbligati ad utilizzarla, potete infatti selezionare la distro Linux più adatta alle vostre esigenze, l'importante è che sia compatibile con il SoC ARM di Raspberry Pi.
Per procedere all'installazione della distribuzione sfruttiamo un imaging tool a nostra scelta. Noi ci siamo affidati al super rodato Raspberry Pi Imager, un tool open source semplice da utilizzare e molto completo. Quindi scarichiamo l'installer di Raspberry Pi Imager dal suo sito web ufficiale ed avviamolo.
Clicchiamo adesso sul tasto "Choose Device" e selezioniamo dal menu a tendina il modello di device che dobbiamo usare.
Successivamente, da "Choose OS" impostiamo release di Raspberry Pi OS a 64bit mentre con "Choose Storage" indichiamo al tool la microSD su cui eseguire il flash della distribuzione.
Premiamo ora su "Next". In questo step si può decidere se configurare sin da subito alcuni aspetti della distribuzione oppure installarla con il setup base. Vi consigliamo però di sfruttare l'opzione "EDIT SETTING" ed inserire subito l'opzione di accesso tramite SSH sin dal primo boot, un hostname, la time zone ed il keyboard layout.
Confermiamo il tutto premendo su "YES" per far partire il processo di flash. L'operazione dovrebbe durare qualche minuto.
Installazione di Docker su Raspberry Pi OS
Se avete impostato i setting consigliati possiamo passare direttamente all'installazione e configurazione del sistema di container Docker. Scarichiamo quindi l'apposito installer:
curl -sSL https://get.docker.com | sh
avviamo ora la sua installazione:
sudo sh get-docker.sh
inseriamo il nostro utente nell'apposito gruppo docker
:
sudo usermod -aG docker nomedelvostroutente
ed in fine impostiamo Docker perché venga eseguito in automatico ad ogni boot del sistema tramite systemd:
sudo systemctl enable docker.service && sudo systemctl enable containerd.service
Installazione e configurazione del container Docker di Watchtower
Lo stesso Watchtower viene distribuito in forma di container Docker. Passiamo quindi alla configurazione preliminare andando a generare la directory dove posizionare tutti i file:
sudo mkdir -p /opt/stacks/watchtower
Spostiamoci nella nuova cartella:
cd /opt/stacks/watchtower
ed ora scriviamo il Docker compose file tramite nano:
sudo nano compose.yaml
Questo file va popolato cosi:
version: '3.7'
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Di base Watchtower auto-aggiorna tutti i docker che sono in esecuzione nel sistema. Se desiderate selezionare manualmente i container da gestire potete aggiungere questo comando nella parte finale del Docker compose file:
command: NOMEDELCONTAINER1 NOMEDELCONTAINER2 NOMEDELCONTAINER3
Salviamo le modifiche con CTRL+O e chiudiamo nano con CTRL+X. Infine avviamo il Docker di Watchtower:
docker compose up -d
A questo punto la procedura è stata completata. Watchtower opera infatti in modo completamente automatizzato. Ogni 24 ore controlla la presenza di nuove release dei nostri container Docker e le va a scaricare e ad installare automaticamente. Gli stessi developer del progetto consigliano l'uso di Watchtower all'interno di homelab, media center o nei develpment environment locali.
Si tratta di una utility non pensata espressamente per gli ambienti di produzione. Watchtower è quindi un programma dedicato per lo più agli utenti casalinghi o a tutti quei power user che si ritrovano a dover gestire un vasto ventaglio di container Docker all'interno della propria postazione o in un NAS.