Translate

giovedì 19 ottobre 2023

Passare a DOCKER COMPOSE

Come spiegato nella scheda dedicata a cos’è e a cosa serve Docker Compose, questo tool permette di evitare di utilizzare un comando strutturato come quello sopra spiegato (o più d’uno), cosa utile per diversi motivi che non staremo a ripetere.

Va da sé che, volendo istanziare una nuova app Docker, più che del comando ci interessi il codice YAML corrispondente da aggiungere alla configurazione di Docker Compose. Tale codice recepisce le caratteristiche del comando di lancio manuale.

Dopo aver facilmente installato Docker Compose sullo stesso host ospitante Docker, la prima cosa da fare è definire dunque un file docker-compose.yaml.

Successivamente all’installazione del tool va creata una directory qualunque nel quale ospitare tale file (l’esempio che segue è dedicato al mondo Raspberry Pi OS/Raspberry Pi o genericamente Linux, ma su ambienti Windows o altro è possibile fare la stessa cosa semplicemente creando una cartella dentro la quale poi creare il file):

mkdir -p /home/pi/homeassistant
cd /home/pi/homeassistant
nano /home/pi/
homeassistant/docker-compose.yaml
 
copiamo dunque nell’editor che si aprirà il seguente codice:

version: '3'
services:
  home-assistant:
    container_name: home-assistant
    image: homeassistant/raspberrypi4-homeassistant:stable
    volumes:
    - /home/homeassistant/.homeassistant:/config
    environment:
    - TZ=Europe/Rome
    network_mode: host
    restart: always

 Al termine, uscire salvando (CTRL+X, Y, invio).

Ciò che abbiamo creato è il corrispettivo YAML per Docker Compose del comando di lancio Docker di cui sopra.

 AVVIARE LO STACK

A questo punto, invece di eseguire i comandi manuali che istanzierebbero i due container, è sufficiente eseguire lo stack del quale abbiamo informato Docker Compose tramite il file YAML.

Per eseguirlo, il comando da ricordare è uno e piuttosto semplice. Eseguendolo dall’interno della stessa cartella nel quale è presente il file docker-compose.yaml (il che lascia intuire che, volendo, si potrebbero definire più stack autonomi e indipendenti), il comando è:

docker compose up -d

L’opzione “up” permetterà di creare l’immagine e tirare su il/i servizi, mentre “-d” indicherà di far partire il tutto in background (detached).

Finito!
Docker Compose provvederà a far tutto da sé in base a quanto indicato nel file di configurazione YAML.

GESTIONE ORDINARIA

Nel caso in cui si voglia aggiornare un container in esecuzione scaricando l’ultima immagine disponibile, sarà necessario digitare i seguenti comandi:

docker compose pull home-assistant
docker compose up -d home-assistant

docker compose pull home-assistant
docker compose up --build -d home-assistant 

Infine, per rimuovere eventuali immagini datate e non più utilizzate per alcun container, il comando è:

docker image prune -fa

docker image prune -f

Va da sé che questo tipo di gestione semplifichi enormemente la gestione dei container Docker: anche solo banalmente il solo aggiornamento di un container a fronte della disponibilità di una nuova immagine è estremamente semplificato, perché non è necessario ricordare l’intero comando Docker per l’esecuzione del container, ma è bensì sufficiente utilizzare i comandi (ben più astratti e semplici) sopra elencati.

Come installare Docker su Raspberry Pi OS (Raspbian)

 

Docker

INSTALLAZIONE AUTOMATICA

Una volta collegati via SSH al proprio Raspberry (avendo cura di utilizzare l’utenza “pi“), eseguire innanzitutto un aggiornamento dell’ambiente tramite i seguenti comandi:

sudo apt-get update -y
sudo apt-get upgrade -y
sudo reboot

Successivamente al riavvio causato dall’ultimo comando, installare tramite procedura automatica l’ambiente di virtualizzazione Docker tramite il comando:

sudo curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
sudo chmod +x /tmp/get-docker.sh
sudo sh /tmp/get-docker.sh


Al termine, saltare alla configurazione successiva.

Sudoers

Sudo (a volte considerato l’abbreviazione di Super-user do) è un programma progettato per far sì che gli amministratori di sistema permettano ad alcuni utenti di eseguire certi comandi come root (o altro utente). La filosofia di base è quella di dare meno privilegi possibile, ma permettere ancora di compiere il lavoro. Sudo è anche un modo efficace per registrare chi ha usato un dato comando e quando.

Si consiglia, arrivati a questo punto, di aggiungere docker al gruppo dei sudoers tramite i comandi:

sudo usermod -aG docker $USER
sudo reboot

Dopo l’esecuzione di tali comandi, chiudere la sessione SSH con

exit 

e poi ricollegarsi nuovamente.

Docker compose

Come abbiamo spiegato qui, il tool “Docker Compose” può essere utilizzato sia come plug-in sia come applicazione a se stante. Se si è seguita la parte sopra di installazione, allora si ha già a disposizione la modalità plug-in; qualora si necessitasse di installarlo su una vecchia installazione di Docker, è sufficiente il comando:

sudo apt-get install docker-compose-plugin

altrimenti non c’è bisogno di altro, se non di ricordarsi che qualsiasi esecuzione di “Docker Compose” andrà eseguita tramite il comando “docker compose” non “docker-compose” (quindi senza trattino).


Se invece, per qualche motivo, si decide di adottare “Docker Compose” in modalità applicazione a se stante, l’installazione si effettua tramite:

python3 -m pip install docker-compose
sudo reboot

Mentre, se siete in ambito venv, è possibile usare il comando:

sudo python3 -m pip install docker-compose
sudo reboot

In quetsa modalità, ricordarsi che qualsiasi esecuzione di “Docker Compose” andrà eseguita tramite il comando “docker-compose” non “docker compose” (quindi con il trattino).

Verifiche

Successivamente all’avvenuta installazione e per verificare che Docker sia correttamente installato, eseguire il seguente comando:

docker run hello-world

Per confermare la bontà dell’installazione ed esecuzione di Docker, l’output dev’essere simile al seguente:


Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

Complimenti!
Docker è ora installato e operativo sul vostro sistema.