Entwicklung

Dockerfile-Linter

Analysieren Sie Ihre Dockerfile auf Best Practices, Sicherheitsprobleme und Optimierungsmöglichkeiten mit sofortigem Feedback und umsetzbaren Vorschlägen.

Kostenlos nutzbar Keine Anmeldung Läuft im Browser

Tool-Arbeitsbereich

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.

Was ist ein Dockerfile-Linter?

Ein Dockerfile-Linter ist ein statisches Analyse-Tool, das Ihre Dockerfile-Anweisungen untersucht und mögliche Probleme anzeigt. Es prüft auf häufige Fehler, Sicherheitslücken (wie das Laufen als Root), veraltete Syntax, ineffiziente Schichtung, fehlende Gesundheitschecks und nicht gepinnte Basisbild-Tags. Ähnlich wie Tools wie Hadolint bietet es ein Feedback mit konkreten Vorschlägen, mit denen Sie kleinere, sicherere und wartbarere Containerbilder erstellen können.

Wie man den Dockerfile-Linter benutzt

  1. 1Fügen Sie Ihre Dockerfile-Inhalte in den Textbereich ein.
  2. 2Der linter analysiert automatisch jede anweisung und zeigt eine kategorisierte liste von ergebnissen an.
  3. 3Jedes Ergebnis enthält eine Zeilennummer, einen Schweregrad (Fehler, Warnung oder Informationen), eine Regel-ID, eine Beschreibung und einen Fixvorschlag.
  4. 4Überprüfen Sie die Zusammenfassungszählungen oben, dann behandeln Sie zuerst Fehler, gefolgt von Warnungen und Informationshinweisen.

Häufige Anwendungsfälle

Pre-Push Auditing

Überprüfen Sie Dockerfiles, bevor Sie zu einer Containerregistrierung gelangen, um Probleme frühzeitig zu erkennen.

CI/CD Best Practices

Durchsetzung der Best Practices von Dockerfile in CI/CD-Pipelines, um eine gleichbleibende Bildqualität zu gewährleisten.

Lernen Docker

Lernen Sie Docker Best Practices mit Echtzeit-Feedback und umsetzbaren Vorschlägen zu Ihren eigenen Dockerfiles kennen.

Code Review

Überprüfen Sie Dockerfiles während Code-Reviews, um Sicherheitsprobleme, Optimierungsmöglichkeiten und veraltete Syntax zu erfassen.

Häufig gestellte Fragen

Welche Regeln überprüft der Dockerfile linter?

Der Linter überprüft über 15 Regeln in drei Schweregraden: Fehler (fehlende FROM, neuestes Tag, ADD vs COPY, doppelte CMD), Warnungen (apt-get flags, sudo use, veralteter MAINTAINER, fehlende HEALTHCHECK/USER, Shell-Form CMD) und Informationen (Kombination von RUN-Layers,.dockerignore, absolute WORKDIR-Pfade).

Entspricht dieser Linter Hadolint?

Dieses Tool deckt die gängigsten und wirkungsvollsten Hadolint-Regeln in einer browserbasierten Benutzeroberfläche ab, ohne dass eine Installation erforderlich ist. Für ein umfassendes Linting in CI / CD sollten Sie Hadolint neben diesem Tool für schnelle Überprüfungen verwenden.

Warum sollte ich meine Basisbildversion anheften?

Mit 'latest' oder einem nicht markierten Basisbild können Ihre Builds unerwartet kaputt gehen, wenn das Upstream-Bild aktualisiert wird. Das Anheften einer bestimmten Version (z. B. Node:20-alpine) gewährleistet reproduzierbare, vorhersehbare Builds.

Warum ist das Laufen als Root in einem Container ein Sicherheitsrisiko?

Laufen als Wurzel in einem Container erhöht die Angriffsfläche. Wenn ein Angreifer die Anwendung kompromittiert, hat er Root-Privilegien innerhalb des Containers, was Container-Flucht gefährlicher machen kann. Das Hinzufügen einer USER-Anweisung mindert dieses Risiko.