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.
Schreibe einen Kommentar