Développement

Linter Dockerfile

Analysez votre Dockerfile pour détecter les meilleures pratiques, les problèmes de sécurité et les opportunités d'optimisation avec des commentaires instantanés et des suggestions exploitables.

Gratuit Sans inscription Fonctionne dans votre navigateur

Espace de travail de l’outil

2 errors 10 warnings 3 info
Line 1DL3007ERROR

Using `latest` tag in FROM (image: ubuntu:latest)

Pin a specific version tag, e.g. ubuntu:22.04 instead of ubuntu:latest.

Line 8DL3020ERROR

ADD used where COPY would suffice

Use COPY instead of ADD for copying local files. ADD has extra features (auto-extract, remote URLs) that can be surprising.

Line 2DL4000WARNING

MAINTAINER is deprecated

Use LABEL maintainer="[email protected]" instead.

Line 5DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3014WARNING

Using `apt-get install` without `-y` flag

Add -y flag to avoid interactive prompts: apt-get install -y.

Line 6DL3015WARNING

Using `apt-get install` without `--no-install-recommends`

Add --no-install-recommends to avoid installing unnecessary packages and reduce image size.

Line 6DL3009WARNING

Missing `apt-get clean` or `rm -rf /var/lib/apt/lists/*` after install

Clean up apt cache in the same RUN layer to reduce image size.

Line 11DL3004WARNING

Using `sudo` in Dockerfile

Avoid sudo. Use USER to switch users, or run commands as root directly (default in Docker).

Line 13DL3011WARNING

EXPOSE with no port number

Specify a valid port number, e.g. EXPOSE 8080.

Line 15DL3006WARNING

Missing HEALTHCHECK instruction

Add a HEALTHCHECK to let Docker know how to check that the container is still working.

Line 15DL3002WARNING

Running as root — no USER instruction found

Add a USER instruction to run the container as a non-root user for better security.

Line 15DL3025WARNING

CMD uses shell form instead of exec form

Use exec form: CMD ["executable", "arg1", "arg2"] for proper signal handling.

Line 1DL3005INFO

Consider using a .dockerignore file

A .dockerignore file helps exclude unnecessary files from the build context, speeding up builds and reducing image size.

Line 4DL3003INFO

4 consecutive RUN instructions found

Combine RUN instructions using && to reduce image layers.

Line 9DL3000INFO

WORKDIR should use an absolute path

Use an absolute path, e.g. WORKDIR /app instead of WORKDIR app.

Qu'est-ce qu'un linter Dockerfile ?

Un linter Dockerfile est un outil d'analyse statique qui examine vos instructions Dockerfile et signale les problèmes potentiels. Il vérifie les erreurs courantes, les vulnérabilités de sécurité (comme l'exécution en tant que root), la syntaxe obsolète, l'empilement inefficace des couches, les contrôles de santé manquants et les balises d'image de base non épinglées. Semblable à des outils comme Hadolint, il fournit des résultats classés par gravité avec des suggestions concrètes pour vous aider à créer des images de conteneurs plus petites, plus sûres et plus maintenables.

Comment utiliser le linter Dockerfile

  1. 1Collez le contenu de votre Dockerfile dans la zone de texte.
  2. 2Le linter analyse automatiquement chaque instruction et affiche une liste catégorisée de résultats.
  3. 3Chaque résultat comprend un numéro de ligne, un niveau de gravité (erreur, avertissement ou information), un ID de règle, une description et une suggestion de correctif.
  4. 4Examinez les décomptes récapitulatifs en haut, puis corrigez d'abord les erreurs, suivi des avertissements et des conseils d'information.

Cas d'utilisation courants

Audit préalable

Auditez les Dockerfiles avant de les transférer vers un registre de conteneurs pour détecter les problèmes plus tôt.

Meilleures pratiques CI/CD

Appliquez les meilleures pratiques Dockerfile dans les pipelines CI/CD pour maintenir une qualité d’image constante.

Docker d’apprentissage

Découvrez les meilleures pratiques Docker avec des commentaires en temps réel et des suggestions exploitables sur vos propres fichiers Docker.

Révision du code

Examinez les Dockerfiles lors des révisions de code pour détecter les problèmes de sécurité, les opportunités d'optimisation et la syntaxe obsolète.

Questions fréquentes

Quelles règles le linter Dockerfile vérifie-t-il ?

Le linter vérifie plus de 15 règles sur trois niveaux de gravité : erreurs (from manquant, dernière balise, ADD vs COPY, CMD en double), avertissements (indicateurs apt-get, utilisation sudo, MAINTAINER obsolète, HEALTHCHECK/USER manquant, CMD sous forme de shell) et informations (combinaison de couches RUN, .dockerignore, chemins WORKDIR absolus).

Ce linter est-il équivalent à Hadolint ?

Cet outil couvre les règles Hadolint les plus courantes et les plus utiles dans une interface basée sur le navigateur, sans installation. Pour une analyse lint complète dans CI/CD, envisagez d'utiliser Hadolint en complément de cet outil pour des vérifications rapides.

Pourquoi devrais-je épingler la version de mon image de base ?

L'utilisation de 'latest' ou d'une image de base non balisée signifie que vos builds peuvent s'interrompre de manière inattendue lorsque l'image en amont est mise à jour. Épingler une version spécifique (e.g., node:20-alpine) garantit des builds reproductibles et prévisibles.

Pourquoi s'exécuter en tant que root dans un conteneur présente-t-il un risque de sécurité ?

L'exécution en tant que root dans un conteneur augmente la surface d'attaque. Si un attaquant compromet l'application, il dispose des privilèges root au sein du conteneur, ce qui peut rendre les fuites de conteneur plus dangereuses. L'ajout d'une instruction USER atténue ce risque.