← Docker — livraison et exploitation des applications

Module 8 / 8 · 90 min

Logs, arrêt propre et retour de version

Relier l’état observable à une procédure d’exploitation testée.

Lessons, exercises and questions in this path are in French. The interface follows the site language.

Your progress will appear here when JavaScript is active.

Progress and best score are stored only in this browser. No account is needed; clearing browser data removes them. Module times are estimates including exercises.

Comprendre le mécanisme

Une application conteneurisée doit exposer des journaux utiles et un comportement d’arrêt défini. La commande principale et la forme de lancement influencent la propagation des signaux. À l’arrêt, terminez ou annulez proprement le travail en cours dans un délai borné. Un redémarrage automatique peut aider à la disponibilité, sans résoudre une erreur de configuration ou une corruption répétée.

Raisonner et vérifier

La vérification de santé doit tester un contrat significatif sans divulguer de secret. Corrélez image exécutée, révision et événements métier minimisés. Pour revenir à une version précédente, utilisez un artefact identifié et vérifiez sa compatibilité avec les données et migrations. Une procédure n’est fiable qu’après exercice dans un environnement contrôlé ; documentez aussi le délai de retour et les limites.

Une identité de release retrouvable

Une release doit relier source, tests et contenu exécuté. Un tag mutable seul ne permet pas de retrouver exactement ce qui a été servi à une date donnée. Conservez les références pertinentes et vérifiez l’identité active après bascule. Cette preuve aide à distinguer un défaut du nouveau code d’un processus resté sur l’ancien artefact ou d’une configuration différente.

Understand this common mistake

latest seul prouve exactement tout contenu historique.

Le tag peut changer de cible.

Les logs sont un stockage à contrôler

Collecter stdout ne rend pas chaque donnée appropriée à une conservation ou un partage. Les traces peuvent contenir tokens, corps personnels et chemins sensibles. Définissez champs, accès et durée selon le besoin d’exploitation. Un incident doit être corrélable par des éléments minimisés. Les diagnostics d’échec demandent une attention particulière car ils traversent parfois des chemins moins contrôlés que les réponses nominales.

Understand this common mistake

stdout rend toute donnée automatiquement publique sans risque.

Les canaux de collecte demandent un contrôle d’accès.

Arrêt gracieux et travail en cours

Un arrêt propre possède un délai et un contrat sur les tâches commencées. Transmettre un signal ne garantit pas l’annulation d’une mutation distante déjà validée. Le service doit savoir ce qu’il termine, reporte ou réconcilie. Testez l’arrêt pendant une opération de laboratoire et observez effets, files et redémarrage. Un processus arrêté rapidement n’est pas forcément un état métier correctement repris.

Understand this common mistake

Tuer le processus annule forcément tout effet distant.

Des opérations peuvent avoir été validées ailleurs.

Le retour d’image ne rembobine pas les volumes

Revenir à une ancienne image modifie le code exécuté, pas automatiquement les écritures persistantes. Les volumes et bases peuvent conserver un format nouveau ou un effet déjà appliqué. Une procédure de rollback doit donc analyser la compatibilité avec l’état courant et les mécanismes de reprise. L’existence d’un ancien artefact ne démontre pas que sa réexécution est sûre sur toutes les données récentes.

Understand this common mistake

Revenir à l’image précédente annule toute écriture persistante.

Code et données ont des cycles distincts.

Prouver la sauvegarde par une restauration

Une archive doit être restaurée dans un environnement distinct avec les outils et préconditions nécessaires. Vérifiez un parcours fonctionnel et les invariants utiles après récupération. Mesurez le délai sur un volume représentatif et conservez les limites. Un redémarrage automatique ou une réplication active ne protège pas nécessairement contre une suppression logique qui a déjà été propagée.

Understand this common mistake

Une archive présente suffit à garantir tout retour arrière.

La restauration doit être observée.

Tester le bon endpoint de santé

Un résultat 200 sur une page statique ne prouve pas que l’application, sa base et la release attendue fonctionnent ensemble. Le contrôle doit porter sur une garantie précise et bornée. Conservez l’identité de version avec la réponse utile, sans publier de secrets. Le succès décrit ce parcours observé ; il ne remplace pas une suite d’autorisation ni une restauration de secours.

Understand this common mistake

Tout 200 statique prouve toutes les dépendances métier.

Le contenu du contrôle détermine sa portée.

Renouveler les processus avec le contenu

Modifier un tag dans un registre ne transforme pas automatiquement les conteneurs déjà actifs. La procédure doit récupérer la bonne référence et remplacer ou renouveler les instances selon le modèle choisi. Vérifiez ensuite le contenu réellement servi. Une simple copie de fichiers ou modification de configuration ne prouve pas que chaque processus a chargé l’état prévu.

Understand this common mistake

Changer le tag modifie automatiquement tout conteneur déjà actif.

Une instance existante garde son contenu tant qu’elle n’est pas remplacée.

Coordonner la migration de données

Une migration peut rendre une ancienne version incompatible avec le schéma courant. Définissez les phases compatibles et les critères qui autorisent le retrait de l’ancien contrat. Avant rollback, examinez cette situation avec les nouvelles écritures déjà effectuées. Un exercice doit simuler la panne à un point intermédiaire, car une démonstration sur une base vide ne couvre pas les données de production.

Understand this common mistake

Toute migration est automatiquement compatible avec toutes les anciennes images.

Les formats de données doivent être coordonnés.

Surveiller la capacité et les boucles de reprise

Un état running n’assure pas une capacité suffisante ni une configuration correcte. Le processus peut être saturé ou répéter le même échec après chaque redémarrage. Reliez ressources, files, délais et résultats métier dans le diagnostic. La reprise automatique doit être bornée et observable ; elle ne constitue pas une correction d’un défaut permanent de configuration ou de donnée.

Understand this common mistake

Un statut running garantit une capacité suffisante.

Le processus peut être saturé tout en restant vivant.

Conserver un dossier d’incident utile

Les preuves d’exercice doivent préciser actif, version, chronologie, observations et limites sans publier les credentials réels. Chaque action doit avoir une raison et un résultat vérifiable. Notez les risques résiduels et les étapes qui n’ont pas été testées. Ce dossier permet d’améliorer la procédure après l’incident, au lieu de conclure que tout est restaurable parce qu’une seule commande a terminé sans erreur.

Understand this common mistake

Une reprise exige de publier les credentials de production.

Les résultats et procédures peuvent rester sans secrets.

Atelier guidé : lire, expliquer et vérifier le code

# Plan proposé :
# 1. Déployer lab-api:2 et migrer la base.
# 2. En cas d’erreur, relancer lab-api:1.
# Aucune procédure de données n’est définie.

Le plan de l’atelier revient au code précédent après une migration annoncée comme incompatible. Cette seule action ne restaure ni schéma ni données. L’ancien binaire peut donc démarrer puis échouer ou mal interpréter l’état courant. Le défaut n’est pas le nom du tag ou celui du conteneur, mais l’absence d’une stratégie de compatibilité et de reprise de la couche persistante.

Préparez un jeu de données de laboratoire puis exercez les deux versions autour d’une migration contrôlée. Notez le point où le retour direct cesse d’être valable et quelles opérations supplémentaires sont nécessaires. Une stratégie progressive peut limiter cette fenêtre, mais elle doit être démontrée. Le contrôle de santé final doit confirmer une réponse applicative attendue liée à la version réellement active.

Worked example

docker inspect lab-app
docker logs --tail 100 lab-app
docker stop --time 20 lab-app
# Utiliser uniquement les ressources de laboratoire nommées.

Ces opérations observent puis demandent un arrêt de l’instance. Elles ne restaurent pas une base ni ne prouvent qu’un ancien binaire est compatible avec son schéma.

Practical exercise

Écrivez et exercez une procédure de retour de release comprenant code, données, santé et preuve de version.

View a suggested solution

Déployez un digest précédent identifié, vérifiez son contrat de schéma, attendez la santé puis contrôlez une réponse applicative. Si les données ne sont pas compatibles, appliquez la stratégie de migration ou restauration prévue.

Verification checklist

  • Tester les signaux et délais.
  • Éviter la boucle de redémarrage comme seul diagnostic.
  • Séparer retour du code et reprise des données.

Knowledge check

Related lesson: Logs, arrêt propre et retour de version ↗
Un redémarrage automatique corrige-t-il nécessairement une mauvaise configuration ?

Reference documentation ↗

Module validation

101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.

Start or resume the 101 questions →