tonformateur
Cloud & DevOps

Construire une image Docker optimisée

📅 Publié le 01/04/2026·tonformateur
← Toutes les ressources

Une image Docker optimisée est légère, rapide à construire et sûre. On y parvient avec des builds multi-stage, un ordre de couches réfléchi et une base minimale.

Points clés

Sommaire
  1. Multi-stage build
  2. Ordre des couches et cache
  3. Image de base minimale et sécurité
  4. En pratique
  5. Questions fréquentes
  6. Pour aller plus loin

Multi-stage build

Le multi-stage build sépare l'étape de compilation de l'image finale : on compile dans un premier FROM avec tous les outils, puis on copie uniquement le binaire ou les artefacts dans une seconde image minimale. Le résultat ne contient plus le compilateur ni les dépendances de build, ce qui réduit drastiquement la taille et la surface d'attaque.

Ordre des couches et cache

Docker met en cache chaque instruction du Dockerfile. En plaçant d'abord la copie des fichiers de dépendances (package.json, requirements.txt) et leur installation, puis seulement ensuite le code source, on évite de réinstaller les dépendances à chaque changement de code. Bien ordonner les couches accélère énormément les builds en CI.

Image de base minimale et sécurité

Choisir une base réduite (alpine, slim, ou distroless) diminue le poids et les vulnérabilités. On exécute le processus avec un utilisateur non-root via USER, on utilise un .dockerignore pour ne pas embarquer .git ou node_modules, et on scanne l'image avec Trivy. Ces réflexes sont à enseigner dès le premier Dockerfile.

En pratique

Scénario. TP de 2 heures : partir d'un Dockerfile naïf d'une app Node ou Go pesant plusieurs centaines de Mo, le réécrire en multi-stage avec base alpine ou distroless et utilisateur non-root. Mesurer la taille avant/après avec docker images et scanner avec Trivy. Livrable : un Dockerfile optimisé, image réduite de plus de 70 pour cent, sans CVE critique.

Questions fréquentes

Pourquoi mon image fait plusieurs centaines de Mo ?

Souvent parce qu'elle embarque les outils de build et une base complète. Un multi-stage build et une base alpine ou distroless réduisent fortement la taille.

À quoi sert le fichier .dockerignore ?

Il exclut du contexte de build les fichiers inutiles (node_modules, .git, fichiers locaux), ce qui accélère le build et évite de copier des données sensibles dans l'image.

Pour aller plus loin

Pour approfondir : Apprendre terraform pas a pas · Automatiser avec ansible. Et le reste de nos ressources pour les écoles, OF et formateurs.

Tags#DevOps#Docker#Open source

Besoin d'un formateur expert ou envie de transmettre ?

tonformateur connecte les écoles et organismes de formation avec des intervenants experts du terrain.

Voir les cours à pourvoir Explorer l'annuaire d'outils →