Pillole di Docker: policy di restart dei container
In questo nuovo articolo dedicato a Docker ci occupiamo della politica di restart dei container.
Fino alla versione 1.2 in caso di crash e riavvio del Docker engine era necessario far ripartire manualmente tutti i container.
In seguito l'operazione è stata automatizzata specificando appunto la policy di restart all'atto della creazione del container stesso utilizzando l'opzione --restart
.
Le modalità disponibili sono:
- no: impostata di default e non prevede alcun riavvio automatico
- always: il container viene sempre riavviato a meno che non sia stato arrestato volontariamente
- unless-stopped: il container viene riavviato tranne quando era nello stato di stopped al momento del blocco o riavvio del Docker Engine
- on-failure: il container viene riavviato se è terminato con un errore (non-zero exit code)
Analizziamole in dettaglio escludendo la prima opzione per la quale non c'è altro da dire.
Always restart policy
In questo caso il container verrà sempre riavviato a meno che non sia stato fermato esplicitamente.
L'opzione da indicare in fase di creazione del container é --restart always
Attraverso il comando docker inspect
si può sapere quante volte è stato riavviato.
In dettaglio
docker inspect <nome-container> | grep -i restartcount
Se viene arrestato con il comando docker stop
non sarà più riavviato in automatico ma occorrerà utilizzare esplicitamente il comando docker start
.
Unless-stopped restart policy
Questa modalità è simile alla precedente in quanto entrambe riavviano i container automaticamente finchè non vengono arrestati di proposito.
Ma la differenza principale è che se il container viene fermato (comando docker stop
) e si riavvia il processo docker, ad esempio dopo un riavvio del server, con la policy always il container sarà riavviato a sua volta mentre con unless-stopped bisognerà utilizzare comunque il comando docker start
in maniera esplicita.
On-failure restart policy
L'ultima modalità riavvia il container solo se si è arrestato per un errore (indicato da un non-zero exit code). Il riavvio avviene anche a seguito della ripartenza del processo docker.
Naturalmente se un container viene arrestato con il comando docker stop
l'exit code sarà 0, ovvero la terminazione corretta e quindi non ci sarà alcun restart automatico.
Utilizzate il seguente link per ottenere un credito free di $200 su DigitalOcean da spendere in 60 giorni
Utilizzate il seguente link per ottenere un credito free di €20 su Hetzner
[VIDEO]
[LINKS]
- Pillole di Docker - Indice argomenti
- Script del progetto
- Creare un VPS equipaggiato con Docker su DigitalOcean
- Flashcards Anki per lo studio
- Libri consigliati