Best Practices für kleinere Docker-Images
Verwendung eines schlanken Basis-Images
Wie bereits erwähnt, kann die Verwendung eines kleineren Basis-Images, wie z. B. alpine
oder scratch
, die Größe Ihres Docker-Images erheblich reduzieren. Diese schlanken Basis-Images enthalten nur die essentiellen Pakete und Abhängigkeiten, wodurch der Gesamt-Fußabdruck minimiert wird.
## Verwendung eines schlanken Basis-Images
FROM alpine:latest
Vermeiden der Installation unnötiger Pakete
Installieren Sie in Ihrer Dockerfile nur die Pakete, die für den Betrieb Ihrer Anwendung erforderlich sind. Vermeiden Sie die Installation zusätzlicher Tools oder Dienstprogramme, die Sie nicht benötigen, da diese die Größe Ihres Images erhöhen.
## Schlechte Praxis: Installation unnötiger Pakete
RUN apt-get update \
&& apt-get install -y curl wget vim
## Gute Praxis: Installation nur notwendiger Pakete
RUN apt-get update \
&& apt-get install -y curl
Nutzung von Multi-Stage-Builds
Wie im vorherigen Abschnitt erläutert, können Multi-Stage-Builds dazu beitragen, kleinere endgültige Images zu erstellen, indem die Build- und Laufzeitumgebungen getrennt werden.
## Dockerfile mit Multi-Stage-Build
FROM golang:1.16 AS builder
COPY . /app
RUN go build -o /app/myapp
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]
Verwendung von .dockerignore zur Ausschluss unnötiger Dateien
Die Datei .dockerignore
ermöglicht es Ihnen, Dateien und Verzeichnisse anzugeben, die vom Docker-Build-Kontext ausgeschlossen werden sollen. Dies kann dazu beitragen, die Größe des Build-Kontexts und folglich die Größe des endgültigen Images zu reduzieren.
## .dockerignore
.git
*.md
Dockerfile
Optimierung der Image-Layers
Optimieren Sie Ihre Dockerfile, indem Sie mehrere RUN-Befehle kombinieren, den Operator &&
verwenden und unnötige Layers vermeiden. Dies kann dazu beitragen, die Anzahl der Layers in Ihrem Image zu reduzieren, was zu einer kleineren Gesamtgröße führt.
## Schlechte Praxis: mehrere RUN-Befehle
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y wget
## Gute Praxis: Kombinieren von RUN-Befehlen
RUN apt-get update \
&& apt-get install -y curl wget
Regelmäßige Bereinigung nicht verwendeter Ressourcen
Wie bereits erwähnt, kann die regelmäßige Bereinigung nicht verwendeter Docker-Ressourcen wie Images, Container, Netzwerke und Volumes dazu beitragen, Ihre Docker-Umgebung schlank und effizient zu halten.
## Bereinigung nicht verwendeter Docker-Ressourcen
docker system prune -a
Durch die Befolgung dieser Best Practices können Sie die Größe Ihrer Docker-Images effektiv optimieren und so deren Erstellung, Verteilung und Bereitstellung effizienter gestalten.