Comprendre le mécanisme
Une image est un modèle de système de fichiers et de configuration ; un conteneur est une instance avec un processus et une couche d’écriture. Arrêter une instance n’équivaut pas à supprimer son image. Les conteneurs utilisent les mécanismes du noyau hôte pour isoler des processus et ne sont pas des machines virtuelles complètes par nature. Le comportement exact de l’hôte varie notamment selon la plateforme d’exécution.
Raisonner et vérifier
Le processus principal détermine la vie du conteneur : lorsqu’il termine, l’instance s’arrête. Un processus en arrière-plan lancé par un shell peut donc disparaître avec son parent ou laisser une instance terminée. Préférez une commande principale au premier plan et comprenez la réception des signaux. Les données importantes ne doivent pas dépendre uniquement de la couche jetable de l’instance.
Modèle distribué et instance exécutée
Une image décrit un contenu et des paramètres utiles au lancement ; un conteneur exécute une instance selon une configuration. Deux conteneurs fondés sur la même image peuvent avoir des montages, variables et états différents. Pour diagnostiquer, notez donc l’identité de l’image et la configuration effective de l’instance. Le nom du projet ne suffit pas à décrire le processus réellement servi.
Erreur fréquente à comprendre
Une image est nécessairement un processus en cours.
Le conteneur exécute une instance fondée sur une image.
Une isolation qui dépend de l’environnement
Un conteneur ne doit pas être assimilé systématiquement à une machine virtuelle disposant de son propre noyau complet. Les mécanismes d’isolation et l’environnement d’exécution définissent les frontières réelles. Cette distinction compte pour les droits et l’impact d’un code compromis. Dessinez les accès à l’hôte, aux volumes et au réseau ; le seul mot conteneur ne décrit pas toutes les capacités disponibles.
Erreur fréquente à comprendre
Tout conteneur possède toujours son propre noyau complet de VM.
L’isolation ne correspond pas systématiquement à une machine virtuelle.
La couche écrivable n’est pas l’archive source
Les modifications de fichiers d’une instance ne republient pas automatiquement une nouvelle image dans le registre. La couche écrivable possède un cycle distinct et peut être jetable lors du remplacement du conteneur. N’y conservez pas l’unique copie de données métier durables. Définissez stockage, sauvegarde et restauration selon le besoin, puis testez le remplacement complet de l’instance avec ces données.
Erreur fréquente à comprendre
Écrire un fichier modifie automatiquement le registre source.
Les changements d’instance ne republient pas l’image.
Le processus principal porte le cycle de vie
Lorsque le processus principal termine normalement selon ce modèle, le conteneur s’arrête. Un service lancé en arrière-plan peut donc laisser son wrapper terminer alors que l’intention était de maintenir le service disponible. Gardez le processus principal au premier plan selon son contrat. Les tests doivent observer démarrage, fin nominale et échec, sans conclure qu’une image construite reste automatiquement en exécution.
Erreur fréquente à comprendre
Un conteneur reste toujours actif après la fin de tout processus.
Son cycle dépend de l’exécution principale.
Le tag est une référence qui peut bouger
Un tag comme latest est un nom dont le contenu cible peut évoluer selon le registre. L’utiliser ne prouve pas que deux déploiements successifs exécutent le même artefact. Pour une analyse d’incident, conservez l’identité du contenu réellement résolu. Une politique de mise à jour doit être explicite : la commodité d’un nom stable ne remplace pas une trace de version.
Erreur fréquente à comprendre
Un tag est une identité de contenu immuable par définition.
Le registre peut associer le même nom à un autre contenu.
Le digest identifie, sans certifier la qualité
Un digest relie une référence à un contenu selon le format concerné. Il aide à vérifier l’identité de l’artefact, mais ne prouve pas l’absence de vulnérabilité ni la légitimité de l’éditeur. Ces propriétés demandent d’autres contrôles et une politique de confiance. Pour une image multi-plateforme, notez aussi la plateforme effectivement choisie afin de décrire l’instance réelle.
Erreur fréquente à comprendre
Un digest prouve automatiquement la confiance dans l’éditeur.
L’identité de contenu et la provenance sont distinctes.
Transmettre les signaux au bon acteur
La forme de lancement et les wrappers influencent la réception des signaux d’arrêt. Un shell ajouté sans gestion adaptée peut rendre le cycle moins direct que la forme exec prévue pour le processus principal. Définissez l’arrêt gracieux et son délai, puis observez le comportement réel. Un arrêt forcé qui semble rapide ne prouve pas que les travaux en cours ont été terminés ou repris correctement.
Erreur fréquente à comprendre
Tout wrapper shell transmet toujours parfaitement les signaux.
Le mode de lancement et le wrapper influencent le comportement.
Une variable d’environnement reste une donnée sensible
Injecter un secret par environnement ne le rend pas impossible à observer. Le processus qui le consomme et certains outils de diagnostic peuvent y avoir accès selon les droits. Limitez distribution, journalisation et conservation. Les exemples de laboratoire doivent utiliser des valeurs publiques fictives. Retirer une variable d’une nouvelle release ne révoque pas une capacité déjà exposée dans une ancienne copie.
Erreur fréquente à comprendre
Une variable d’environnement est impossible à observer par tout outil.
Sa distribution et sa visibilité demandent une politique.
Ajouter les restrictions nécessaires
L’isolation disponible doit être complétée par des choix de runtime : utilisateur, capacités, montages, accès au socket et ressources selon le besoin. Un processus non privilégié peut encore présenter des vulnérabilités métier. La défense doit donc limiter les conséquences tout en maintenant les contrôles applicatifs. Vérifiez les restrictions effectives plutôt que leur seule présence dans un commentaire de configuration.
Erreur fréquente à comprendre
Le mot conteneur garantit toute sécurité contre tout code hostile.
Les capacités et interfaces exposées comptent.
Tester le conteneur réellement livré
Une construction réussie ne démontre pas le démarrage ni le comportement du service. Lancez l’artefact avec une configuration représentative et vérifiez le parcours utile, les erreurs et l’arrêt. Conservez image, paramètres et résultat dans la preuve. Tester depuis le poste avec des fichiers non embarqués peut masquer une dépendance manquante ; un environnement propre rend ces hypothèses visibles.
Erreur fréquente à comprendre
Une image construite prouve la disponibilité du service.
Construction et exécution sont des étapes différentes.
Atelier guidé : lire, expliquer et vérifier le code
FROM php:8.4-cli
COPY worker.php /app/worker.php
CMD ["php", "/app/worker.php"] Le CMD de l’atelier est écrit en forme JSON dite exec. Il décrit le lancement du processus PHP avec son script, sans demander ici une forme shell qui interpréterait la commande comme une ligne de shell. L’extrait ne publie aucun port et ne déclare aucun volume ; ces propriétés demanderaient leur propre configuration.
Dans le laboratoire, lancez un script qui attend puis traite un arrêt contrôlé. Comparez la forme de lancement et la transmission des signaux en observant les événements du processus. Remplacez ensuite entièrement le conteneur et examinez les fichiers persistants attendus. Ces expériences séparent contenu d’image, cycle de processus et stockage, au lieu de considérer qu’un seul Dockerfile démontre le fonctionnement complet du service.
Exemple commenté
docker run --name lab-hello --rm alpine:3.22 echo "reservation lab"
# La commande termine ; le conteneur est supprimé grâce à --rm.L’instance n’est pas un service permanent : elle exécute echo puis termine. L’image et le conteneur ont des cycles de vie distincts.
Exercice de mise en pratique
Lancez un conteneur au premier plan, observez sa sortie puis comparez docker ps et docker ps -a.
Voir une proposition de correction
Exécutez une commande courte sans --rm pour inspecter ensuite son état et son code de sortie. Supprimez uniquement les ressources nommées du laboratoire.
Points de vérification
- Identifier le processus principal.
- Séparer arrêt, suppression et image.
- Prévoir la persistance hors de la couche jetable.
Contrôle de connaissances
Cours associé : Processus, images et cycle de vie ↗Validation du module
101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.
Commencer ou reprendre les 101 questions →Cette marque suit votre propre avancement ; elle ne certifie pas la maîtrise du sujet. Effectuez l’exercice avant de passer à la suite.
