Ich versuche es zum ersten Mal mit Docker und habe noch kein "mentales Modell". Total Anfänger.
Alle Beispiele, die ich betrachte, enthalten die --rm
auszuführende Flagge, wie z
docker run -it --rm ...
docker container run -it --rm ...
Frage:
Warum enthalten diese Befehle das --rm
Flag? Ich würde denken, wenn ich mir die Mühe machen würde, einen Container mit den guten Sachen darin einzurichten oder herunterzuladen, warum sollte ich ihn dann entfernen? Ich möchte es behalten, um es wieder zu verwenden.
Ich weiß also, dass ich die falsche Vorstellung von Docker habe.
docker
docker-container
passende Momente
quelle
quelle
--rm
Entfernt den gestoppten Container (dendocker run
erstellten) und nicht das Bild, auf dem er basiert (was Sie heruntergeladen haben).docker run --help
sollte nützlich sein. Wenn Sie nicht entfernen möchten, können Sie es übergeben--rm
, dass der Container automatisch bereinigt und das Dateisystem entfernt wird, wenn der Container beendet wird. Dies bedeutet nicht, dass das Material aus dem Container entfernt wird.Antworten:
Container sind lediglich eine Instanz des Images, mit dem Sie sie ausführen. Der Geisteszustand beim Erstellen einer containerisierten App besteht nicht darin, einen frischen, sauberen Ubuntu-Container zu nehmen und die Apps und Konfigurationen herunterzuladen, die Sie darin haben möchten, und sie dann laufen zu lassen.
Sie sollten den Container als Instanz Ihrer Anwendung behandeln, Ihre Anwendung ist jedoch in ein Image eingebettet. Die richtige Verwendung wäre das Erstellen eines benutzerdefinierten Bildes, in das Sie alle Ihre Dateien, Konfigurationen, Umgebungsvariablen usw. in das Bild einbetten. Lesen Sie mehr über Dockerfile und wie es gemacht wird hier
Sobald Sie dies getan haben, haben Sie ein Image, das alles enthält, und um Ihre Anwendung zu verwenden, führen Sie das Image einfach mit den richtigen Porteinstellungen oder anderen dynamischen Variablen aus
docker run <your-image>
Das Ausführen von Containern mit
--rm
Flag ist gut für Container, die Sie nur für kurze Zeit verwenden, um etwas zu erreichen, z. B. um Ihre Anwendung in einem Container zu kompilieren oder um einfach zu testen, ob sie funktioniert. Dann wissen Sie, dass es sich um einen kurzlebigen Container handelt und Sie Teilen Sie Ihrem Docker-Dämon mit, dass Sie nach dem Ausführen alles löschen, was damit zusammenhängt, und den Speicherplatz sparen.quelle
--rm
beim Schließen des Terminalfensters durch den Benutzer gestartet werden, automatisch zu löschen ? dh nicht absichtlichexit
in der Container-Shell ausführen , sondern nur das Terminal-GUI-Fenster schließen. Ich habe festgestellt, dass Container in diesem Fall nicht gelöscht werden.Das Flag
--rm
wird verwendet, wenn der Container nach Abschluss der Aufgabe gelöscht werden muss.Dies ist für kleine Tests oder POC-Zwecke geeignet und erspart die Kopfschmerzen bei der Haushaltsführung.
quelle
von https://docs.docker.com/engine/reference/run/#clean-up---rm
Mit kleinen Worten: Es ist nützlich, den Host von gestoppten und nicht verwendeten Containern sauber zu halten.
quelle
Ich verwende
--rm
beim Herstellen einer Verbindung zu laufenden Containern einige Aktionen wie Datenbanksicherung oder Dateikopie. Hier ist ein Beispiel:docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db
Oben wird ein laufender Container mit dem Namen 'app_postgres_1' verbunden und ein Backup erstellt. Sobald der Sicherungsbefehl abgeschlossen ist, wird der Container vollständig gelöscht.
quelle