Ich spiele mit Docker, indem ich eine Dockerfile
mit einigen NodeJS-Anweisungen erstelle. Jedes Mal, wenn ich Änderungen an der Docker-Datei vornehme, erstelle ich das Image neu, indem ich es sudo docker build -t nodejstest .
in meinem Projektordner ausführe. Dadurch wird jedoch jedes Mal ein neues Image erstellt und meine SSD wird bald verschluckt.
Gibt es eine Möglichkeit, ein vorhandenes Image zu aktualisieren, wenn ich die Docker-Datei ändere, oder muss ich jedes Mal, wenn ich Änderungen an der Datei vornehme, ein neues erstellen?
Entschuldigung, wenn es eine dumme Frage ist
Antworten:
Docker Build Support Caching, solange keine
ADD
Anweisung vorhanden ist. Wenn Sie aktiv Dateien entwickeln und ändern, wird nur das, was nach demADD
liegt, neu erstellt.Seit 0.6.2 (heute geplant) können Sie dies tun
docker build --rm .
und es werden die temporären Container entfernt. Die Bilder bleiben jedoch erhalten.Um die verwaisten Bilder zu entfernen, können Sie sie mit
docker images
auschecken unddocker rmi <id>
eines davon ausführen . Ab sofort gibt es eine automatische Bereinigung und alle Bilder ohne Tags (Waisen, frühere Builds) werden entfernt.quelle
--rm
; Es ist immer noch eine der Top-Antworten für eine Google-Suche "Docker Update Image".Laut diesem Best Practices-Handbuch werden die ersten Zeilen Ihrer Docker-Datei, wenn Sie sie gleich lassen, auch zwischengespeichert und dieselben Images für zukünftige Builds wiederverwendet
quelle
Während der Entwicklung ist es weniger sinnvoll, für jedes Commit einen ganzen Container neu zu erstellen. Später können Sie die Erstellung eines Docker-Containers mit Ihrem neuesten Code als Teil Ihres QS- / Bereitstellungsprozesses automatisieren.
Grundsätzlich können Sie einen minimalen Container erstellen, der Code
-v /home/myuser/mynode:/home/myuser/mynode
abruft (mit git beim Starten des Containers oder mit ENTRYPOINT zum Ausführen des Knotens).Siehe meine Antwort auf diese Frage:
Docker Rails App und Git
quelle