RousselTMLEARNING

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

Scanner ses images

1. Ce que cherche un scanner #

Vulnérabilités, configuration, secrets.

Le principe #

Un scanner inventorie les paquets de l'image (système et langages : npm, pip, Maven…) et les compare aux bases de vulnérabilités (CVE). Trivy cherche aussi les erreurs de configuration (Dockerfile, Kubernetes, Terraform) et les secrets oubliés.

Scanner au build, en CI, dans le registre et en production

2. Trivy en pratique #

Des résultats réels.

Scanner une image #

trivy image --severity HIGH,CRITICAL php:8.2-fpm-alpine
trivy image --ignore-unfixed --severity HIGH,CRITICAL nginx:1.30.6
trivy image --format json -o rapport.json monimage:1.0

Sur une image PHP construite en 2023 (Alpine 3.18), Trivy a trouvé 23 vulnérabilités HIGH et CRITICAL, toutes corrigées depuis :

PaquetCVEInstalléeCorrigée en
curlCVE-2023-385458.3.0-r08.4.0-r0
curlCVE-2024-61978.3.0-r08.9.0-r0
libcrypto3CVE-2023-53633.1.3-r03.1.4-r0
libcrypto3CVE-2024-61193.1.3-r03.1.7-r0

Ici, la correction est simple : reconstruire l'image sur une base à jour.

Le bruit des vulnérabilités sans correctif #

Sur l'image nginx officielle la plus récente (Debian), Trivy remonte 71 vulnérabilités HIGH et CRITICAL, dont 69 sans correctif disponible. Bloquer la CI sur ces 69 ne mènerait nulle part : utilisez --ignore-unfixed pour ne retenir que ce que vous pouvez corriger, et suivez le reste dans un fichier .trivyignore justifié, ou passez à une image durcie.

Scanner aussi la configuration #

trivy config Dockerfile
Tests: 27 (SUCCESSES: 22, FAILURES: 5)
Failures: 5 (UNKNOWN: 0, LOW: 2, MEDIUM: 1, HIGH: 2, CRITICAL: 0)
DS-0001 (MEDIUM): Specify a tag in the 'FROM' statement for image 'node'
DS-0002 (HIGH): Specify at least 1 USER command in Dockerfile with non-root user as argument
DS-0005 (LOW): Consider using 'COPY . /app' command instead of 'ADD . /app'
DS-0026 (LOW): Add HEALTHCHECK instruction in your Dockerfile
DS-0029 (HIGH): '--no-install-recommends' flag is missed: 'apt-get update && apt-get install -y curl'

Trivy recoupe Hadolint (version, ADD, --no-install-recommends) et ajoute l'absence d'utilisateur non-root et de HEALTHCHECK.

3. Bloquer en CI, et les alternatives #

Automatiser.

Dans un pipeline #

name: image
on: [push, pull_request]
jobs:
  build-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lint du Dockerfile
        run: docker run --rm -i hadolint/hadolint:v2.15.1 hadolint --failure-threshold warning - < Dockerfile
      - name: Construire l'image
        run: docker build -t app:${{ github.sha }} .
      - name: Scanner l'image
        run: |
          docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:0.76.2 \
            image --exit-code 1 --ignore-unfixed --severity HIGH,CRITICAL app:${{ github.sha }}

--exit-code 1 fait échouer le job dès qu'une vulnérabilité HIGH ou CRITICAL corrigible est trouvée.

Les autres outils #

OutilPoints forts
Trivy (Aqua)Vulnérabilités, configuration, secrets, SBOM ; libre
Grype (Anchore)Scanner libre rapide, souvent couplé à Syft pour le SBOM : grype monimage:1.0
Docker ScoutIntégré à Docker Desktop et Docker Hub, recommandations d’image de base : docker scout cves monimage:1.0
RegistresHarbor (Trivy intégré), GitLab, GitHub : scan à la réception

Grype et Docker Scout n'ont pas été exécutés pour cet article ; leurs commandes viennent de leur documentation.

Sources #

Résultats réels de Trivy 0.76.2, novembre 2026 ; les nombres évoluent chaque jour avec les bases de vulnérabilités.

📄 Scanner ses images Docker : Trivy, Grype et Docker Scout →

Mon suivi

  • ⏱ Durée estimée : ≈ 6 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 (...

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

Choisir une image de base durcie : slim, distroless, Docker Hardened Images, Chainguard ; non-roo...

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 ...

Docker : vue d'ensemble, architecture et premiers pas

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

Aide-mémoire Docker : Les commandes essentielles

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

Linter ses Dockerfile avec Hadolint et docker build --check

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

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...

DevSecOps : sécuriser la chaîne logicielle de bout en bout

Intégrer la sécurité dans le pipeline DevOps : shift-left, modélisation des menaces, détection de...

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 !