Jeder docker run
Befehl oder jeder RUN
Befehl in einer Docker-Datei erstellt einen Container. Wenn der Container nicht mehr läuft, ist er immer noch mit zu sehen docker ps -a
.
Sollte ich mir Sorgen machen, eine riesige Liste nicht laufender Container zu haben? Sollte ich docker rm
auf nicht laufenden Containern ausstellen ?
Ich bin mir nicht sicher, welche Leistungs- oder Speicher- / Speichereinbußen diese nicht laufenden Container verursachen.
docker exec
Befehl wurde vor einiger Zeit hinzugefügt, siehe docs.docker.com/reference/commandline/cli/#exec - er führt einen Befehl von einem laufenden Container aus.Antworten:
Die Container, die nicht ausgeführt werden, belegen außer dem Speicherplatz keine Systemressourcen.
Es ist normalerweise gut, nach sich selbst aufzuräumen, aber wenn viele von ihnen herum sitzen, sollte dies die Leistung überhaupt nicht verlangsamen.
Wenn Sie beim Ausführen von Docker-Befehlen mit vielen gestoppten Containern eine Verlangsamung feststellen, liegt möglicherweise ein Fehler im Docker vor, und Sie sollten einen Fehler einreichen.
quelle
RUN
Befehl wurden jetzt verschoben zu: docs.docker.io/en/latest/reference/builder/#runIn der
docker run
Dokumentation wird beschrieben, wie Sie den Container automatisch bereinigen und das Dateisystem entfernen, wenn der Container beendet wird:Das Obige zeigt, dass Container standardmäßig nicht entfernt werden, aber das Hinzufügen
--rm=true
oder nur die Kurzschrift--rm
wie folgt funktioniert:Wenn Sie den Container verlassen, wird er automatisch entfernt.
Sie können dies testen, indem Sie Ihre Docker-Container in einem Terminalfenster auflisten:
Führen Sie dann in einem anderen Fenster diesen Befehl aus, um mehrere Docker-Container auszuführen, die alle automatisch beendet werden, nachdem Sie bis zu 10 Sekunden lang geschlafen haben.
quelle
-rm
ist veraltet und wird irgendwann entfernt, verwenden Sie--rm
stattdessen.Wenn Sie einen Container mit einem Volume ausführen und Docker rm -v nicht zum Entfernen verwenden, wird das Volume nach dem Entfernen eines Containers nicht entfernt. Es gibt auch ein Problem mit einem vfs-Speichertreiber. Wenn Sie vergessen zu bereinigen, verbrauchen Volumes Ihren Speicherplatz.
quelle
Um festzustellen, wie viel Speicher nicht laufende Docker-Container verwenden, können Sie Folgendes ausführen:
--size
: Gesamtgröße der Dateien anzeigen (FYI: Erläutern Sie die Spalte SIZE in "docker ps -s" und was das Schlüsselwort "virtual" # 1520 bedeutet ).--filter "status=exited"
: listet nur gestoppte Container auf .Gleichermaßen könnten Sie laufen:
docker container ls --filter "status=exited"
Sie können auch den Befehl
docker system df
(eingeführt in Docker 1.13.0, Januar 2017) verwenden, um die Verwendung der Docker-Festplatte anzuzeigen, z.quelle