Couches d’images et optimisation
Découvrez comment les images Docker sont organisées en couches et appliquez des techniques pour optimiser leur taille et leurs temps de construction.
Couches d’images et optimisation est une leçon Docker & DevOps Fundamentals gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Docker & DevOps Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Les couches d’image : éléments constitutifs
Les images Docker ne sont pas constituées d’un fichier unique et gigantesque. Elles sont plutôt construites à partir d’une série de couches en lecture seule. Imaginez ces couches comme des transparents empilés.
Chaque couche représente une modification apportée à l’image, ce qui rend les images efficaces et flexibles. Ce système de couches est fondamental dans le fonctionnement de Docker.

Instructions du Dockerfile et couches
Lorsque vous écrivez un Dockerfile, presque chaque instruction crée une nouvelle couche au-dessus de la précédente. Les instructions telles que FROM, RUN, COPY et ADD contribuent toutes à créer de nouvelles couches.
Docker exécute ces instructions séquentiellement, en construisant chaque nouvelle couche à partir de l’état de la précédente.
Examiner l’historique d’une image
Vous pouvez afficher les couches qui composent une image avec la commande docker history. Cette commande affiche chaque instruction, sa taille et sa date de création, ce qui vous aide à comprendre comment l’image s’est développée.
C’est un outil puissant pour résoudre les problèmes liés à la taille des images.
docker history my-image:latestLa puissance de la mise en cache des couches
Docker utilise un cache de création intelligent. Si une instruction de votre Dockerfile et son contexte (par exemple, les fichiers copiés) n’ont pas changé depuis la dernière création, Docker réutilise la couche existante.
Cette réutilisation accélère considérablement les créations suivantes, car Docker n’a pas besoin de réexécuter les étapes inchangées.
Optimisation 1 : ordonner intelligemment les couches
L’ordre des instructions dans votre Dockerfile est essentiel pour utiliser efficacement le cache. Placez en haut les instructions qui changent rarement (comme l’installation des dépendances système).
Les instructions qui changent souvent (comme la copie du code de votre application) doivent être placées plus bas. Ainsi, si seul votre code change, Docker peut réutiliser les couches mises en cache correspondant aux dépendances stables.
Exemple : optimiser l’ordre des couches
Comparez ces deux extraits de Dockerfile. Le bon ordre place d’abord les dépendances stables, ce qui permet à Docker de les mettre en cache et de ne recréer que les couches correspondant au code de l’application qui change.
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]Optimisation 2 : regrouper les commandes RUN
Chaque commande RUN crée généralement une nouvelle couche. Vous pouvez réduire le nombre de couches et souvent la taille finale de l’image en combinant plusieurs commandes dans une seule instruction RUN.
Utilisez l’opérateur && \ pour enchaîner les commandes et les intégrer à une seule couche atomique.
Exemple : enchaîner les commandes RUN
Au lieu d’utiliser plusieurs commandes RUN, enchaînez-les avec && \. Cela crée une seule couche plus efficace pour l’ensemble de ces opérations.
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
CMD ["bash"]Optimisation 3 : nettoyer les fichiers
Nettoyez toujours les fichiers qui ne sont nécessaires que pendant le processus de création. Par exemple, les caches des gestionnaires de paquets (comme apt-get clean) ou les artefacts temporaires de création peuvent augmenter considérablement la taille des couches de votre image.
Les nettoyer dans la même commande RUN que celle qui les a créés garantit qu’ils ne persistent pas dans une couche précédente.
Vérification rapide : optimisation d’une image
Examinez l’extrait de Dockerfile suivant :
FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]Quelle modification optimiserait le mieux ce Dockerfile afin de réduire la taille de l’image et d’accélérer potentiellement les recréations ?
Récapitulatif : des images plus légères et plus rapides
Vous avez appris que les images Docker sont construites en couches, chaque instruction en créant souvent une nouvelle. Comprendre cela est essentiel pour les optimiser !
- Ordonnez soigneusement les instructions afin de maximiser les réutilisations du cache de création.
- Regroupez plusieurs commandes
RUNen une seule pour réduire le nombre de couches. - Nettoyez les fichiers temporaires dans les commandes
RUNcorrespondantes afin de conserver des couches peu volumineuses.
Ces techniques permettent de créer des images Docker plus petites et plus rapides à construire, essentielles pour des déploiements efficaces.
Questions Fréquemment Posées
La leçon « Couches d’images et optimisation » est-elle gratuite ?
Oui — le texte complet de « Couches d’images et optimisation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Docker & DevOps Fundamentals, passe à CoddyKit PRO. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Couches d’images et optimisation » ?
Découvrez comment les images Docker sont organisées en couches et appliquez des techniques pour optimiser leur taille et leurs temps de construction. Tu pratiques Docker & DevOps Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Docker & DevOps Fundamentals ?
Aucune expérience préalable n'est requise. Docker & DevOps Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Couches d’images et optimisation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Docker & DevOps Fundamentals ?
Oui. Chaque leçon Docker & DevOps Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Comprendre les Dockerfiles
- Créer des images Docker personnalisées
- Couches d’images et optimisation
- Constructions en plusieurs étapes et images plus légères