0Pricing
Docker & DevOps Fundamentals · Lektion

Image-Ebenen und Optimierung

Erfahren Sie, wie Docker-Images in Ebenen aufgebaut sind, und wenden Sie Techniken zur Optimierung von Imagegröße und Build-Zeiten an.

Image-Ebenen und Optimierung ist eine kostenlose Docker & DevOps Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Docker & DevOps Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Image-Ebenen: Bausteine

Docker-Images sind keine einzige riesige Datei. Stattdessen werden sie aus einer Reihe schreibgeschützter Ebenen aufgebaut. Stellen Sie sich diese Ebenen wie übereinandergelegte Folien vor.

Jede Ebene stellt eine Änderung am Image dar, wodurch Images effizient und flexibel werden. Diese Schichtenstruktur ist grundlegend für die Funktionsweise von Docker.

Image-Ebenen und Optimierung — Illustration 1

Dockerfile-Anweisungen und Ebenen

Wenn Sie ein Dockerfile schreiben, erstellt fast jede Anweisung eine neue Ebene über der vorherigen. Anweisungen wie FROM, RUN, COPY und ADD tragen alle zur Erstellung neuer Ebenen bei.

Docker führt diese Anweisungen nacheinander aus und erstellt jede neue Ebene auf Grundlage des Zustands der vorherigen.

Die Image-Historie untersuchen

Mit dem Befehl docker history können Sie die Ebenen anzeigen, aus denen ein Image besteht. Dieser Befehl zeigt jede Anweisung, ihre Größe und den Erstellungszeitpunkt an und hilft Ihnen zu verstehen, wie ein Image gewachsen ist.

Dies ist ein leistungsstarkes Werkzeug zum Debuggen von Problemen mit der Image-Größe.

docker history my-image:latest

Die Vorteile des Ebenen-Cachings

Docker verwendet einen intelligenten Build-Cache. Wenn sich eine Anweisung in Ihrem Dockerfile und ihr Kontext (z. B. die zu kopierenden Dateien) seit dem letzten Build nicht geändert haben, verwendet Docker die vorhandene Ebene wieder.

Diese Wiederverwendung beschleunigt nachfolgende Builds erheblich, da Docker unveränderte Schritte nicht erneut ausführen muss.

Optimierung 1: Die Reihenfolge der Ebenen optimieren

Die Reihenfolge der Anweisungen in Ihrem Dockerfile ist entscheidend für effektives Caching. Platzieren Sie Anweisungen, die sich selten ändern (z. B. die Installation von Systemabhängigkeiten), am Anfang.

Anweisungen, die sich häufig ändern (z. B. das Kopieren Ihres Anwendungscodes), sollten weiter unten stehen. Wenn sich dann nur Ihr Code ändert, kann Docker die gecachten Ebenen für die stabilen Abhängigkeiten wiederverwenden.

Beispiel: Die Reihenfolge der Ebenen optimieren

Vergleichen Sie diese beiden Dockerfile-Ausschnitte. Bei der guten Reihenfolge werden stabile Abhängigkeiten zuerst angegeben. Dadurch kann Docker sie cachen und nur die Ebenen für den sich ändernden Anwendungscode neu erstellen.

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]

Optimierung 2: RUN-Befehle zusammenfassen

Jeder RUN-Befehl erstellt typischerweise eine neue Ebene. Sie können die Anzahl der Ebenen und häufig auch die endgültige Image-Größe reduzieren, indem Sie mehrere Befehle in einer einzigen RUN-Anweisung zusammenfassen.

Verwenden Sie den Operator && \, um Befehle miteinander zu verketten und sie zu einem atomaren Layer zusammenzufassen.

Beispiel: RUN-Befehle verketten

Statt mehrere RUN-Befehle zu verwenden, verketten Sie sie mit && \. Dadurch entsteht eine einzige, effizientere Ebene für alle diese Vorgänge.

FROM ubuntu:latest
RUN apt-get update && \
    apt-get install -y curl && \
    rm -rf /var/lib/apt/lists/*
CMD ["bash"]

Optimierung 3: Dateien bereinigen

Bereinigen Sie stets Dateien, die nur während des Build-Prozesses benötigt werden. Beispielsweise können Paketmanager-Caches (wie bei apt-get clean) oder temporäre Build-Artefakte die Größe Ihrer Image-Ebenen erheblich erhöhen.

Wenn Sie diese Dateien innerhalb desselben RUN-Befehls bereinigen, in dem sie erstellt wurden, stellen Sie sicher, dass sie nicht in einer vorherigen Ebene erhalten bleiben.

Schnelltest: Image-Optimierung

Betrachten Sie den folgenden Dockerfile-Ausschnitt:

FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]

Welche der folgenden Änderungen würde dieses Dockerfile am besten für eine kleinere Image-Größe und möglicherweise schnellere erneute Builds optimieren?

Zusammenfassung: Schlankere, schnellere Images

Sie haben gelernt, dass Docker-Images in Ebenen aufgebaut werden und jede Anweisung häufig eine neue Ebene erstellt. Dieses Verständnis ist der Schlüssel zur Optimierung!

  • Ordnen Sie Anweisungen sorgfältig an, um möglichst viele Treffer im Build-Cache zu erzielen.
  • Fassen Sie mehrere RUN-Befehle zu einem zusammen, um die Anzahl der Ebenen zu reduzieren.
  • Bereinigen Sie temporäre Dateien innerhalb der jeweiligen RUN-Befehle, damit die Ebenen klein bleiben.

Diese Techniken helfen dabei, kleinere Docker-Images zu erstellen, die schneller gebaut werden können und für effiziente Deployments unerlässlich sind.

Häufig gestellte Fragen

Ist die Lektion „Image-Ebenen und Optimierung“ kostenlos?

Ja — der vollständige Text von „Image-Ebenen und Optimierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Docker & DevOps Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Image-Ebenen und Optimierung“?

Erfahren Sie, wie Docker-Images in Ebenen aufgebaut sind, und wenden Sie Techniken zur Optimierung von Imagegröße und Build-Zeiten an. Du übst Docker & DevOps Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Docker & DevOps Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Docker & DevOps Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Image-Ebenen und Optimierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Docker & DevOps Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Docker & DevOps Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Dockerfiles verstehen
  2. Benutzerdefinierte Docker-Images erstellen
  3. Image-Ebenen und Optimierung
  4. Multi-Stage-Builds und kleinere Images
← Zurück zu Docker & DevOps Fundamentals