Docker ist aus der modernen Softwareentwicklung kaum noch wegzudenken. Es ermöglicht die einfache Erstellung, Verteilung und Ausführung von Anwendungen in isolierten Containern. Doch nicht jedes Dockerfile ist gleich gut – falsche oder unsaubere Konfigurationen führen schnell zu übergroßen Images, Sicherheitslücken oder schwer wartbaren Containern. In diesem Artikel zeigen wir dir bewährte Dockerfile Best Practices, mit denen du schlanke, performante und sichere Docker-Container baust.


🔍 Warum Best Practices beim Dockerfile so wichtig sind

Ein gutes Dockerfile:

  • Reduziert die Image-Größe
  • Erhöht die Sicherheit
  • Verkürzt Build-Zeiten
  • Erleichtert Wartung und Skalierung

Durch strukturierte und durchdachte Dockerfiles sparst du Ressourcen – und vermeidest Sicherheitsrisiken in der Produktionsumgebung.


🧱 1. Verwende ein minimales Base Image

Wähle das kleinste passende Basis-Image, z. B.:

DockerfileKopierenBearbeitenFROM alpine

Statt etwa ubuntu oder debian, wenn keine vollständige Distribution notwendig ist. Alpine ist nur ca. 5 MB groß und reduziert die Angriffsfläche.

⚠️ Hinweis: Wenn du native C-Bibliotheken brauchst, achte auf Kompatibilitäten mit musl vs. glibc.


🧹 2. Führe apt/apk-Befehle sauber aus

Füge keine überflüssigen Packages hinzu und lösche Cache-Daten sofort:

DockerfileKopierenBearbeitenRUN apk add --no-cache curl bash

Oder bei apt:

DockerfileKopierenBearbeitenRUN apt-get update && \
    apt-get install -y curl && \
    rm -rf /var/lib/apt/lists/*

🧼 3. Verwende Multi-Stage Builds

Reduziere das End-Image, indem du den Build-Prozess und das finale Image trennst:

DockerfileKopierenBearbeiten# Build stage
FROM golang:1.22 as builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Final stage
FROM alpine
COPY --from=builder /app/myapp /usr/local/bin/myapp
ENTRYPOINT ["myapp"]

➡️ So landet nur das, was du wirklich brauchst, im finalen Image.


🛡️ 4. Setze einen nicht-root User ein

Vermeide Root-Rechte im Container:

DockerfileKopierenBearbeitenRUN addgroup -S app && adduser -S app -G app
USER app

Das erhöht die Sicherheit enorm – besonders bei öffentlich zugänglichen Anwendungen.


🧾 5. Fixiere Versionen

Vermeide „Latest“-Versionen – sie können ungewollte Updates ins Image bringen:

DockerfileKopierenBearbeitenFROM node:20.10.0

Oder bei Tools:

DockerfileKopierenBearbeitenRUN pip install flask==2.3.0

♻️ 6. Kombiniere RUN-Befehle

Jeder RUN-Befehl erzeugt einen Layer – kombiniere Befehle sinnvoll, um Layers zu minimieren:

DockerfileKopierenBearbeitenRUN apk add --no-cache git && \
    git clone https://github.com/example/repo.git && \
    make install

🧪 7. Teste lokal mit docker scan

Bevor du dein Image veröffentlichst, führe einen Sicherheitscheck durch:

bashKopierenBearbeitendocker scan my-image

Oder nutze Trivy, um CVEs und Abhängigkeiten zu prüfen:

bashKopierenBearbeitentrivy image my-image

🚀 Fazit

Ein gutes Dockerfile ist die Grundlage für effiziente, sichere und wartbare Container. Mit den hier gezeigten Best Practices auf howtonow.de kannst du deine Docker-Projekte auf das nächste Level bringen:

✅ Kleines Base-Image
✅ Multi-Stage Build
✅ Keine Root-Rechte
✅ Klare Versionierung
✅ Sicherheits-Scans

Bleib dran – weitere DevOps-Guides, Container-Tutorials und Cloud-Native Tipps findest du regelmäßig auf howtonow.de.