Image-Layer
Ein Container-Image besteht aus gestapelten, unveränderlichen Layern — jeder Layer ist die Differenz (Diff), die ein Build-Schritt hinzugefügt hat. Die Layer werden gecacht und zwischen Images geteilt, was Build und Distribution schnell und platzsparend macht.
Mechanik: Jede Anweisung in einem Dockerfile (RUN, COPY usw.) erzeugt normalerweise einen neuen Layer oberhalb des vorherigen; zur Laufzeit werden alle Layer über ein Union-Dateisystem (OverlayFS) zu einem zusammenhängenden Dateisystem gestapelt, mit einer beschreibbaren obersten Schicht für den Container. Konsequenzen für die Optimierung: Cache — unveränderte Layer werden nicht neu gebaut (selten geänderte Dinge wie die Installation von Abhängigkeiten gehören früh ins Dockerfile, der Code zuletzt, für die beste Trefferquote); Sharing — mehrere Images, die auf demselben Basis-Layer aufbauen, teilen ihn sich auf der Platte und beim Download (es werden nur die fehlenden Layer geholt). Falle: Ein Geheimnis, das in einem Layer landet, bleibt in der Historie erhalten, selbst wenn ein späterer Layer es scheinbar „entfernt" → deshalb Multi-Stage-Builds verwenden. Grundlegend fürs Verständnis von Image-Größe und Build-Performance. Hängt zusammen mit Multi-Stage-Build und OverlayFS.