Wie man alte Docker-Container entfernt
Diese Frage bezieht sich auf https://stackoverflow.com/questions/17014263/should-i-be-concerned-about-excess-non-running-docker-containers.
Ich frage mich, wie ich alte Container entfernen kann. Mit docker rm 3e552code34a
kann man einen einzelnen Container entfernen, aber ich habe schon viele. Mit docker rm --help
gibt es keine Auswahlmöglichkeit (z.B. alle oder nach Image-Name).
Vielleicht gibt es ein Verzeichnis, in dem diese Container gespeichert sind, wo ich sie einfach manuell löschen kann?
1159
3
Seit Docker 1.13.x können Sie Docker container prune verwenden:
Dies entfernt alle gestoppten Container und sollte auf allen Plattformen auf die gleiche Weise funktionieren.
Es gibt auch ein Docker system prune:
das alle unbenutzten Container, Netzwerke, Images (sowohl mit als auch ohne Referenz) und optional auch Volumes mit einem einzigen Befehl bereinigt.
Bei älteren Docker-Versionen können Sie Docker-Befehle mit anderen Unix-Befehlen verknüpfen, um das zu erhalten, was Sie brauchen. Hier ist ein Beispiel dafür, wie man alte Container aufräumt, die schon Wochen alt sind:
Dieses Beispiel stammt von https://twitter.com/jpetazzo/status/347431091415703552, um zu zeigen, dass es richtig ist.
Eine andere Methode, die ich von Guillaume J. Charmes übernommen habe (Ehre, wem Ehre gebührt):
entfernt alle Container auf elegante Art und Weise.
Und von Bartosz Bilicki, für Windows:
Für PowerShell:
Ein Update mit Docker 1.13 (Q4 2016), Dank an VonC (später in diesem Thread):
docker system prune
löscht ALLE unbenutzten Daten (d.h. in der Reihenfolge: gestoppte Container, Volumes ohne Container und Images ohne Container).Siehe PR 26108 und commit 86de7c0, die ein paar neue Befehle einführen, um die Visualisierung zu erleichtern, wie viel Platz die Daten des Docker-Daemons auf der Festplatte einnehmen, und die es ermöglichen, "nicht benötigte" Überschüsse leicht zu löschen.
Stoppen Sie zunächst die laufenden Container, bevor Sie versuchen, sie zu entfernen
Entfernen Sie laufende Container
Sie können
kill
anstelle vonstop
verwenden. In meinem Fall bevorzuge ichstop
, da ich dazu neige, sie zu wiederholen, anstatt jedes Mal einen neuen zu erstellen, so dass ich versuche, sie ordentlich zu beenden.Hinweis: Der Versuch, einen Container zu stoppen, führt zu einer Fehlermeldung:
Entferne alle Container