Docker : diagnostiquer un conteneur qui redémarre en boucle
Une méthode reproductible pour identifier la cause d’un conteneur Docker en état Restarting, lire ses logs et corriger sa configuration.
Commencer par observer l’état réel
Un conteneur qui redémarre n’est pas forcément un problème Docker. Le processus principal peut quitter à cause d’une variable absente, d’un service indisponible ou d’une commande de démarrage incorrecte. Commence par afficher tous les conteneurs, y compris ceux déjà arrêtés.
Note le statut, le nombre de redémarrages et l’heure du dernier changement avant de modifier quoi que ce soit.
docker ps -a
docker inspect --format '{{.State.Status}} {{.State.ExitCode}} {{.RestartCount}}' api-gatewayLire les logs et le code de sortie
Les dernières lignes donnent souvent la première cause exploitable. Un code 1 indique généralement une erreur applicative, 126 ou 127 un problème de commande, et 137 un arrêt forcé qui peut venir d’un manque de mémoire.
Si les logs sont très volumineux, limite la sortie et ajoute des horodatages pour rapprocher l’erreur d’un déploiement ou d’un incident externe.
docker logs --tail 100 --timestamps api-gateway
docker inspect --format '{{.State.OOMKilled}}' api-gatewayComparer la configuration attendue
Inspecte les variables, volumes, réseaux et dépendances du conteneur. Une erreur fréquente consiste à utiliser localhost pour joindre une base située dans un autre conteneur : dans ce cas, utilise le nom du service Docker Compose.
Avec Compose, vérifie aussi la configuration fusionnée. Elle montre les valeurs réellement appliquées après lecture des fichiers et variables d’environnement.
docker inspect api-gateway
docker compose config
docker compose psCorriger puis vérifier sans masquer la cause
Corrige la valeur fautive dans la source de configuration, recrée le service et observe son healthcheck. Évite de lancer seulement une boucle de redémarrage : elle peut rendre le service vert quelques secondes sans supprimer la panne.
Après la remise en ligne, conserve la chronologie, la cause et la correction dans un court compte rendu. Cette habitude réduit fortement le temps de diagnostic lors du prochain incident.
docker compose up -d --force-recreate api-gateway
docker compose ps
curl -fsS http://127.0.0.1:8080/health