RousselTMLEARNING

Article · Docker : de la découverte à l'expertise

Images durcies

1. Pourquoi durcir l'image de base ? #

Ce que contient vraiment une image.

Le constat #

Une image hérite de tout ce que contient son image de base : shell, gestionnaire de paquets, bibliothèques. Chaque paquet est une vulnérabilité potentielle et un outil de plus pour un attaquant qui aurait pris pied dans le conteneur. Nous avons scanné deux images avec Trivy :

ImageVulnérabilités HIGH et CRITICALAvec correctif disponible
Image PHP sur Alpine 3.18, construite en 2023, jamais reconstruite23 (3 CRITICAL)23 : toutes corrigées depuis
nginx officielle 1.30.6 (Debian), novembre 202671 (1 CRITICAL)2 seulement

Deux leçons : une image non reconstruite accumule des failles déjà corrigées en amont, et une image complète traîne des dizaines de vulnérabilités sans correctif, qu'un scanner remontera sans que vous puissiez agir. La solution : partir d'une base minimale et reconstruire souvent.

Du plus complet au plus durci : image complète, slim, distroless, image durcie

2. Les familles d’images #

Du plus simple au plus durci.

Comparatif #

FamilleExempleAtoutsLimites
-slimnode:22.11-bookworm-slimCompatible, moins de paquetsShell et apt toujours présents
Alpinepython:3.13-alpineTrès petitemusl : incompatibilités possibles avec certaines bibliothèques
Distroless (Google)gcr.io/distroless/nodejs22-debian12:nonrootPas de shell ni de gestionnaire de paquets, variante nonrootDébogage moins direct
Docker Hardened Imagesdhi.io/…Plus de 1 000 images Debian et Alpine, libres (Apache 2.0) depuis décembre 2025, SBOM et attestationsConnexion Docker Hub requise ; FIPS et support étendu payants
Chainguardcgr.dev/chainguard/…Images minimales reconstruites en continuVersions anciennes réservées à l’offre payante

Le Dockerfile durci #

Le principe : construire dans une image complète, puis copier seulement le résultat dans une image minimale, exécutée sans root.

# syntax=docker/dockerfile:1
FROM node:22.11-bookworm-slim AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY . .

FROM gcr.io/distroless/nodejs22-debian12:nonroot
WORKDIR /app
COPY --from=build /app /app
USER 65532:65532
EXPOSE 3000
CMD ["server.js"]
  • Versions fixées : jamais latest, pour des constructions reproductibles.
  • Multi-stage : les outils de construction restent dans l'étape build.
  • Utilisateur numérique : USER 65532:65532, que Kubernetes peut vérifier avec runAsNonRoot.

3. Exploiter une image sans shell #

Déboguer et maintenir.

Déboguer #

Sans shell, docker exec -it … sh ne fonctionne plus. Utilisez un conteneur de débogage qui partage les espaces de noms :

docker run --rm -it --pid=container:app --network=container:app busybox:1.37 sh
# Kubernetes
kubectl debug -it pod/app --image=busybox:1.37 --target=app
Reconstruire régulièrement. Une image durcie vieillit comme les autres : reconstruisez-la au moins chaque semaine, et automatisez la mise à jour de l'image de base (Renovate, Dependabot).

Sources #

📄 Images durcies : réduire la surface d'attaque de ses conteneurs →

Mon suivi

  • ⏱ Durée estimée : ≈ 5 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Questions sur cette leçon

Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.

Poser une question sur cette leçon →

Glossaire de la formation

Micro-services

Architecture où une application est divisée en plusieurs petits services indépendants, souvent déployés dans le Cloud.

Docker

Outil permettant de virtualiser et packager des applications à l'intérieur de conteneurs légers pour un déploiement optimal.Exemple de déploiement d'u...

Prometheus

Système open source de surveillance et d'alerte, particulièrement adapté pour la collecte de métriques dans des environnements dynamiques (comme Kuber...

Kubernetes

Plateforme open source d'orchestration de conteneurs permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications conte...

CI/CD

Intégration Continue et Déploiement Continu. Pratiques DevOps visant à automatiser les tests et le déploiement des applications pour livrer plus rapid...

Terraform

Outil d'Infrastructure as Code (IaC) permettant de définir et de provisionner des ressources d'infrastructure cloud et on-premise via des fichiers de ...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

DevOps

Culture, mouvement et pratiques visant à unifier le développement logiciel (Dev) et l'administration des infrastructures informatiques (Ops).Découvrir...

API Gateway

Passerelle servant de point d'entrée unique pour l'ensemble des requêtes vers des architectures micro-services. Elle gère le routage, la sécurité et l...

Architecture

Conception globale et structurelle d'un système informatique, définissant ses différents composants, leurs relations et les principes guidant son évol...

Artefact (Artifact)

Résultat final d'un processus de compilation ou de construction logicielle (build), tel qu'un fichier .jar, une archive zip ou une image Docker, prêt ...

Repository

Dépôt de stockage centralisé. Peut désigner un dépôt de code source (ex: Git) ou un dépôt d'artefacts et binaires (ex: Harbor, Nexus, Artifactory).

Ansible

Outil open source d'automatisation informatique (IaC) permettant la gestion des configurations, le déploiement d'applications et l'orchestration, fonc...

Articles recommandés

Container registry : choisir et sécuriser son registre d'images (Docker Hub, Harbor, GHCR, ECR)

Comprendre les registres de conteneurs : Docker Hub, GitHub Container Registry, registres cloud (...

Scanner ses images Docker : Trivy, Grype et Docker Scout

Détecter les vulnérabilités et erreurs de configuration des images avec Trivy, lire les résultats...

Bonnes pratiques Docker : images, exécution, sécurité et exploitation

Les bonnes pratiques Docker : Dockerfile et builds multi-étapes, images minimales et reproductibl...

SBOM : l'inventaire des composants de vos images

Générer un SBOM CycloneDX ou SPDX, le rescanner sans reconstruire et savoir en quelques secondes ...

Aide-mémoire Docker : Les commandes essentielles

Un guide pratique regroupant toutes les commandes indispensables pour manipuler les images, les c...

Docker : vue d'ensemble, architecture et premiers pas

Découvrir Docker : conteneurs vs machines virtuelles, architecture client/daemon/registre, images...

Sécurité réseau des conteneurs (container network security) et networking Kubernetes

Sécuriser le réseau des conteneurs : fonctionnement du networking Docker et Kubernetes, CNI, Netw...

Linter ses Dockerfile avec Hadolint et docker build --check

Repérer les erreurs et mauvaises pratiques d'un Dockerfile avant la construction : Hadolint, ses ...

Conteneurs, Kubernetes et cloud native dans une démarche DevOps

Le rôle des conteneurs et de Kubernetes dans le DevOps : images reproductibles, Dockerfile multi-...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !