Ich habe einen Container mit GlassFish. Als ich versuchte, ein Bild festzuschreiben, wurden es 14 GB. Später habe ich /tmp/
in dem Container gelöscht, der 10 GB groß war, und versucht, ein Bild festzuschreiben, aber das Bild ist immer noch 14 GB groß. Es scheint, dass das Löschen von Dateien aus dem Container nicht in der Bildgröße berücksichtigt wird. Wie behebe ich dieses Problem?
12
glassfish
Docker-Image ist ungefähr 1 GB groß. Während es für ein Docker-Bild verdammt groß ist, ist es immer noch viel kleiner als das, was Sie zu bauen scheinen.Antworten:
Das Problem, mit dem Sie möglicherweise konfrontiert sind, besteht darin, dass das Entfernen von Dateien in einem Commit nichts an der Tatsache ändert, dass die Datei in einem vorherigen Image vorhanden war, sodass das vorherige Image immer noch 14G beträgt.
Schauen Sie sich den Teil "Ebenen" in diesem Artikel an: http://woudenberg.io/reducing-docker-image-size/
Um dieses Problem zu beheben, müssen Sie die Elemente unter / tmp / innerhalb des ursprünglichen Commits entfernen, das sie generiert hat, damit das als Ergebnis dieses Commits erstellte Image sie nicht enthält. Dies ist bei der Verwendung von Docker-Dateien einfach, beim Erstellen von Bildern mit Commits jedoch nicht sicher, ob dies möglich ist.
Sie können möglicherweise auch Ebenen quetschen, indem Sie das Bild exportieren / importieren.
quelle
Wenn Sie die Antwort von @Juan Antonio erweitern,
Dockerfile
wird dies keinen Platz sparen:Was Sie stattdessen tun müssen, ist:
Auf der anderen Seite bedeutet dies weniger Caching, als wenn sich etwas in dieser großen Befehlszeile ändert. Docker muss den gesamten Befehlssatz erneut ausführen.
quelle