Politiques de redémarrage

Une politique de redémarrage dit à Docker quoi faire quand un conteneur s'arrête : rien (no), le relancer après un plantage (on-failure), ou le garder en marche malgré les plantages et les redémarrages du serveur (unless-stopped, always).

Comment ça marche

--restart unless-stopped relance le conteneur dès qu'il s'arrête, et quand Docker redémarre après un redémarrage du serveur, sauf si tu l'as arrêté toi-même. Les redémarrages s'espacent, 100 ms, 200 ms, 400 ms et ainsi de suite, et le délai revient à zéro une fois que le conteneur a tourné 10 secondes. La valeur par défaut est no.

Ce qui casse

on-failure est fait pour les plantages, pas pour les redémarrages du serveur : pour être sûr qu'un service revienne après un redémarrage, utilise unless-stopped ou always. Une politique de redémarrage masque aussi une boucle de plantages : garde un œil sur le nombre de redémarrages.

Dans un terminal

docker run -d --name api --restart unless-stopped -p 3000:3000 orders-api
docker update --restart unless-stopped api
docker inspect -f '{{.RestartCount}}' api

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.