Hadolint : Analyse statique de Dockerfiles
Mise à jour :
Lorsqu’on écrit un Dockerfile, il est facile de faire des erreurs qui peuvent impacter la sécurité, les performances ou la maintenabilité des images. C’est là qu’intervient Hadolint, un analyseur statique conçu pour détecter les mauvaises pratiques et proposer des améliorations. En s’appuyant sur des règles bien définies et sur les recommandations de Docker, il aide à écrire des Dockerfiles plus efficaces et conformes aux standards.
Fonctionnement
Hadolint est conçu pour analyser les Dockerfiles et détecter les erreurs, les mauvaises pratiques et les recommandations d’optimisation. Voici ses principales fonctionnalités.
Lorsqu’un Dockerfile est analysé, Hadolint renvoie une liste de recommandations classées par gravité. Chaque erreur est associée à un code spécifique qui permet de comprendre et corriger le problème.
Exemple d’analyse :
Résultat typique :
Hadolint aide aussi à identifier les problèmes liés aux dépendances, comme
l’absence de versions épinglées dans les instructions RUN apt-get install
.
Cela permet d’éviter des builds non reproductibles et des erreurs inattendues.
Installation
L’installation de Hadolint est simple et s’adapte à plusieurs environnements. Voici comment procéder en fonction de votre système d’exploitation.
Linux et macOS
La méthode la plus simple consiste à télécharger le binaire directement :
Windows
Sous Windows, Hadolint peut être installé via Chocolatey :
Ou avec Scoop :
Vérification de l’installation
On peut ensuite vérifier l’installation avec :
Utilisation de base
Une fois Hadolint installé, son utilisation est simple. Il suffit de l’exécuter sur un Dockerfile pour obtenir un rapport détaillé des erreurs et recommandations.
Lancer une analyse de base
La commande la plus simple pour analyser un Dockerfile est :
Si le fichier contient des erreurs, Hadolint affichera une liste avec le numéro de ligne, le code de la règle et une brève description du problème :
Interpréter les résultats
Chaque message d’erreur est accompagné d’un code de règle (ex: DL3008, DL4006). Ces règles sont documentées sur le site officiel de Hadolint ↗, ce qui permet de comprendre leur signification et comment les corriger.
Corriger les erreurs courantes
-
DL3008 : Ne pas installer des paquets sans version spécifique Mauvais exemple :
Bon exemple :
-
DL4006 : Utiliser
SHELL
pour modifier les options par défautMauvais exemple :
Bon exemple :
Exclure certaines règles
Si une règle n’est pas pertinente pour un projet, on peut l’ignorer avec :
Ou ajouter un commentaire directement dans le Dockerfile :
Avec ces bases, Hadolint devient un outil incontournable pour améliorer la qualité des Dockerfiles et éviter les mauvaises pratiques.
Configuration d’Hadolint
Pour éviter de répeter les ignore à répéition, il suffit de créer un fichier
.hadolint.yaml
pour gérer la configuration :
Intégration dans un pipeline CI/CD
L’intégration de Hadolint dans un pipeline CI/CD permet d’automatiser la vérification des Dockerfiles et d’empêcher le déploiement de mauvaises pratiques
GitLab CI/CD
Dans un projet GitLab, on peut ajouter une étape d’analyse Hadolint dans
le fichier .gitlab-ci.yml
:
Si des erreurs sont détectées, le pipeline échouera et demandera une correction avant de poursuivre le déploiement.
GitHub Actions
Pour GitHub, on peut créer un workflow .github/workflows/hadolint.yml
:
Ce workflow exécute Hadolint à chaque push
ou pull request
et affiche
les erreurs directement dans l’interface de GitHub Actions.
Conclusion
Vous l’aurez compris Hadolint est un outil essentiel pour garantir des Dockerfiles propres, sécurisés et conformes aux bonnes pratiques. En intégrant son analyse dans un pipeline CI/CD, on automatise la détection des erreurs avant le déploiement, ce qui évite des problèmes en production. Son utilisation est simple, sa configuration flexible. Qu’attendez vous pour l’utiliser ?
Plus d’infos
Voici quelques ressources pour approfondir l’utilisation de Hadolint :
- Site officiel : GitHub - Hadolint ↗
- Documentation : Hadolint README ↗
- Liste des règles : Hadolint Rules ↗
- Image Docker officielle : Hadolint sur Docker Hub ↗