Angenommen, Sie haben ein Andock-Image, und Sie reduzieren es oder quetschen es, um die Größe zu reduzieren. Dies ist vorteilhaft für Laufzeitartefakte, sodass sie möglicherweise nur minimale Ressourcen für Speicherung und Schieben/Ziehen benötigen.Wird ein Docker-Image nicht durch Komprimierung/Verflachung beeinträchtigt?
Aber ich frage mich, ob es einen Kompromiss zwischen Abflachung (produzieren eine einzelne gequetschte Ebene) und Layer Wiederverwendung, die von einer Container-Registrierung auftritt, wenn Sie Ihr Bild drücken, um es zu speichern.
Hier ist ein Beispiel: Angenommen, Sie haben ein Bild mit mehreren Ebenen - ein normales altes Docker-Bild - und es ist vielleicht 500 MB groß. Sie verwenden Squashing oder Abflachung, um es zu einer einzelnen Schicht zu komprimieren, die 250 MB groß sein kann.
Nehmen wir an, Sie müssen eine Änderung an Ihrem Bild vornehmen, eine Version 2 erstellen. Version 2 ist eine sehr geringfügige Änderung in einer späten Schicht des Containers, möglicherweise den Namen einer Einstellungsdatei direkt vor der CMD
Anweisung ändern oder so.
In dem Fall, wo Sie eine Reihe von erweiterten Ebenen in die Registrierung verschoben haben, wenn Sie gehen, um dieses neue Bild zu schieben, muss nur die abweichende letzte Ebene im Cache der Registrierung gespeichert werden, was die Summe bedeuten kann Die Größe (für das Ausgangsbild und das neue Bild der Version 2 zusammen) beträgt je nach der zuletzt geänderten Ebene 550 MB oder so.
In dem Fall, in dem Sie es abgeflacht haben, ist Ihr neues Version 2-Abbild nur ein völlig neues Einzelschichtbild, das mit dem ursprünglichen Container keine Historie hat. (Vielleicht kann Ihre lokale Docker-Instanz die Schicht Geschichte für die Abflachung sehen, aber die Registrierung hat es nicht).
In diesem Fall müssen Sie etwa 500 MB in der Registrierung speichern: jeweils 250 MB für die erste und zweite Version des Bildes.
Klar können Sie sehen, sobald wir dies ein drittes Mal tun, ist der Gesamtraum der abgeflachten Bilder tatsächlich größer als der Raum der inkrementellen Änderungen zu erweiterten Schichtbildern.
Gibt es etwas, das mir an der Funktionsweise fehlt? Es schlägt vor, dass Sie nur die Abflachung in dem Moment durchführen möchten, bevor Sie den Container an seinen endgültigen Bestimmungsort zur Verwendung versenden - aber Sie würden nicht im Allgemeinen die Abflachung beim Speichern in einer Registrierung vornehmen möchten.
Es könnte Eckenfälle geben, in denen das Basisbild so groß ist und die Abflachung so viel Verkleinerung ergibt, dass es sich lohnt, aber ich versuche den allgemeinen Fall zu verstehen, und ich kann keine Dokumentation finden, die diesen speziellen Aspekt der Schicht diskutiert Abflachung.