Vérifiez un Dockerfile avec 55 règles hadolint : versions figées, utilisateur root, cache et plus
Fonctionne dans votre navigateur. Rien de ce que vous saisissez n'est envoyé nulle part. Vérifié le 16 octobre 2026.Un linter de Dockerfile lit le fichier sans le construire et signale les lignes risquées ou coûteuses. Celui-ci applique 55 des règles DL de hadolint, comme DL3008 pour les paquets apt-get sans version figée et DL3002 pour l'exécution en root, et donne pour chaque constat sa ligne, son niveau et sa correction. Il fonctionne dans votre navigateur, sans installation et sans Docker.
Cette page a été traduite automatiquement à partir de l'original anglais. Aucune personne n’a encore relu la traduction : c’est la version anglaise qui fait foi. Lire l'original en anglais
Collez le Dockerfile dans la zone, ouvrez le fichier ou cliquez sur Essayer un exemple.
Lisez les constats, triés par ligne : chacun a un niveau, son code hadolint, ce qui ne va pas et comment le corriger.
Cliquez sur un constat pour aller à sa ligne, corrigez-le et voyez la liste se mettre à jour pendant la saisie.
Cliquez sur Copier le rapport pour emporter les constats en texte, pour une pull request ou un ticket.
Un Dockerfile peut se construire aujourd'hui et échouer le mois prochain : une image de base sans version figée évolue, un apt-get install récupère une nouvelle version, un cache laissé dans une couche alourdit l'image de centaines de mégaoctets. Un linter repère cela avant la mise en production. hadolint est la référence dans les pipelines CI ; cette page applique ses règles Dockerfile dans votre navigateur.
Ce qui est vérifié. Chaque constat indique sa ligne, son code hadolint, un niveau et une correction en une ligne. Les règles se répartissent en cinq groupes :
| Groupe | Exemples |
|---|---|
| Builds reproductibles | DL3006 image sans tag, DL3007 latest, DL3008 apt-get, DL3013 pip, DL3016 npm, DL3018 apk |
| Images plus légères | DL3009 listes apt, DL3015 recommends, DL3019 cache apk, DL3042 cache pip, DL3059 couches RUN superflues |
| Sécurité | DL3002 utilisateur root, DL3004 sudo, DL4006 pipefail |
| Exactitude | DL3011 plage de ports, DL3021 cible de COPY, DL3022 et DL3023 noms d'étape, DL3044 ENV, DL3061 ordre |
| Intention claire | DL3000 WORKDIR, DL3003 cd, DL3020 ADD, DL3025 CMD en JSON, DL4000 MAINTAINER |
À quel point il suit hadolint. Les règles ont été écrites à partir du code source de hadolint 2.12, et les tests reprennent les réponses du vrai programme hadolint pour plus de 80 Dockerfiles : les mêmes codes aux mêmes lignes, à chaque fois. Les builds multi-étapes, ONBUILD, les lignes de continuation, la directive escape et les commentaires # hadolint ignore= en ligne se comportent comme dans hadolint. Les avertissements SC de ShellCheck sur le code shell des lignes RUN ne sont pas inclus.
Désactiver une règle. Placez # hadolint ignore=DL3008 sur la ligne précédant une instruction pour ignorer cette règle à cet endroit, ou # hadolint global ignore=DL3059 n'importe où pour l'ignorer dans tout le fichier. Le résumé indique combien de constats ont été désactivés.
Tout fonctionne dans votre navigateur : le Dockerfile que vous collez ou ouvrez n'est jamais envoyé.
DL3008 indique qu'une ligne apt-get install nomme des paquets sans version, si bien que chaque build peut installer autre chose. Écrivez paquet=version, comme curl=7.88.1-10+deb12u5, et trouvez la version actuelle avec apt-cache policy curl dans l'image de base. Figer les versions rend l'image reproductible ; mettez-les à jour volontairement, pas par accident.
Un conteneur exécuté en root dispose des droits root à l'intérieur : un attaquant qui pénètre l'application peut donc faire davantage, et une erreur dans un volume monté peut modifier des fichiers de l'hôte. Créez un utilisateur dans un RUN, comme useradd app, et terminez l'étape par USER app. Les étapes de build précédentes peuvent toujours s'exécuter en root.
Chaque RUN crée une couche, et un fichier supprimé dans une couche ultérieure occupe toujours de la place dans la précédente. apt-get update télécharge des listes de paquets de plusieurs dizaines de mégaoctets : supprimez-les donc dans le même RUN avec && rm -rf /var/lib/apt/lists/*. Les supprimer dans un RUN séparé ne fait rien gagner.
Écrivez un commentaire juste au-dessus de l'instruction : # hadolint ignore=DL3008, ou plusieurs codes séparés par des virgules. Pour désactiver une règle dans tout le fichier, écrivez # hadolint global ignore=DL3059 n'importe où. Les deux fonctionnent dans hadolint et sur cette page, et le résumé compte ce qui a été désactivé.
Pour les règles Dockerfile, oui : les 55 codes DL, leurs niveaux et leurs conditions suivent hadolint 2.12, et les tests comparent avec le vrai programme hadolint sur plus de 80 fichiers. Ne sont pas inclus les avertissements SC de ShellCheck sur le code shell des lignes RUN, ni les règles qui exigent un fichier de configuration, comme les registres autorisés.
Utilisez COPY pour les fichiers et les dossiers. ADD télécharge aussi des URL et décompresse les archives tar locales, ce qui est utile quand vous voulez exactement cela et surprenant sinon. hadolint signale ADD pour un simple fichier comme DL3020, et un COPY suivi d'un tar -x de la même archive comme DL3010, là où ADD le ferait en une étape.
Les taux et les règles changent ; vérifiez la source avant de vous fier à un chiffre.
Toujours bloqué ? Poser une question sur Linter de Dockerfile et toute personne qui connaît la réponse peut répondre. Aucun compte nécessaire.