Configuration des politiques de redémarrage des conteneurs
Docker vous permet de configurer des politiques de redémarrage (restart policies) pour les conteneurs. Une politique de redémarrage détermine si un conteneur doit être redémarré automatiquement par le démon Docker (Docker daemon) après sa sortie. Il s'agit d'une fonctionnalité essentielle pour garantir la disponibilité de vos applications.
Dans cette étape, vous apprendrez à configurer des politiques de redémarrage pour les conteneurs Docker.
Tout d'abord, arrêtons et supprimons le conteneur my-nginx précédent pour repartir de zéro.
docker stop my-nginx
docker rm my-nginx
Maintenant, exécutons un nouveau conteneur Nginx avec une politique de redémarrage always.
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
L'indicateur --restart=always indique à Docker de toujours redémarrer le conteneur s'il s'arrête, quel que soit le code de sortie. Il redémarrera également le conteneur lorsque le démon Docker démarre.
Vérifiez que le conteneur est en cours d'exécution :
docker ps
Maintenant, simulons une défaillance du conteneur en l'arrêtant manuellement.
docker stop my-nginx-always
Attendez quelques secondes, puis vérifiez à nouveau l'état du conteneur :
docker ps
Vous devriez voir que le conteneur my-nginx-always a été automatiquement redémarré par le démon Docker. La colonne STATUS indiquera qu'il est Up depuis une courte période.
Les autres politiques de redémarrage courantes incluent :
no : Ne pas redémarrer automatiquement le conteneur (par défaut).
on-failure : Redémarrez le conteneur uniquement s'il se termine avec un code de sortie différent de zéro (indiquant une erreur). Vous pouvez éventuellement spécifier le nombre maximal de tentatives de redémarrage (par exemple, on-failure:5).
unless-stopped : Redémarrez toujours le conteneur, sauf s'il est explicitement arrêté par l'utilisateur ou si le démon Docker est arrêté.
Essayons la politique on-failure. Arrêtez et supprimez le conteneur actuel :
docker stop my-nginx-always
docker rm my-nginx-always
Exécutez un nouveau conteneur avec la politique on-failure :
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
Vérifiez qu'il est en cours d'exécution :
docker ps
Maintenant, simulons un échec. Nous pouvons le faire en exécutant une commande à l'intérieur du conteneur qui se termine avec un statut différent de zéro.
docker exec my-nginx-on-failure sh -c "exit 1"
Vérifiez l'état du conteneur après quelques secondes :
docker ps
Le conteneur aurait dû être redémarré automatiquement car il s'est terminé avec un statut différent de zéro.
Les politiques de redémarrage sont un outil puissant pour assurer la résilience de vos applications conteneurisées. En configurant la politique appropriée, vous pouvez automatiser la récupération des conteneurs qui s'arrêtent de manière inattendue.