Gestoppte Container mit spezifischem Label bereinigen
In den vorherigen Schritten haben wir gelernt, wie man alle gestoppten Container und gestoppte Container basierend auf ihrer Erstellungszeit bereinigt. In diesem Schritt werden wir eine weitere nützliche Methode zum Filtern von Containern für die Bereinigung untersuchen: die Verwendung von Labels. Labels sind Schlüssel-Wert-Paare, die Sie Docker-Objekten (einschließlich Containern) zuordnen können, um sie zu organisieren und zu verwalten.
Zuerst erstellen wir einige Container mit verschiedenen Labels.
docker run -d --name container-label-app --label app=frontend ubuntu sleep infinity
docker run -d --name container-label-env --label env=development ubuntu sleep infinity
docker run -d --name container-no-label ubuntu sleep infinity
Nun stoppen wir alle Container.
docker stop container-label-app container-label-env container-no-label
Listen Sie alle Container und ihre Labels auf, um die zugewiesenen Labels zu sehen.
docker ps -a --format "{{.Names}}\t{{.Labels}}"
Die Ausgabe sollte ähnlich aussehen:
container-label-app app=frontend
container-label-env env=development
container-no-label
Jetzt bereinigen wir nur die gestoppten Container mit dem Label app=frontend
. Wir verwenden dazu das --filter
-Flag mit dem label
-Filter.
docker container prune --filter "label=app=frontend"
Docker fordert eine Bestätigung an. Geben Sie y
ein und drücken Sie Enter.
WARNUNG! Dadurch werden alle gestoppten Container entfernt.
Möchten Sie fortfahren? [y/N] y
Die Ausgabe sollte anzeigen, dass der Container mit dem Label app=frontend
entfernt wurde.
Gelöschte Container:
<container_id_app_frontend>
Insgesamt freigegebener Speicherplatz: XMB
Um zu überprüfen, dass nur der Container mit dem app=frontend
-Label entfernt wurde, listen Sie erneut alle Container auf.
docker ps -a --format "{{.Names}}\t{{.Labels}}"
Jetzt sollten nur noch die Container mit dem env=development
-Label und ohne Label angezeigt werden.
container-label-env env=development
container-no-label
Sie können auch Container bereinigen, die kein bestimmtes Label haben, indem Sie dem Label-Filter das Präfix !
voranstellen. Lassen Sie uns den Container bereinigen, der nicht das Label env=development
hat.
docker container prune --filter "label!=env=development"
Bestätigen Sie die Entfernung durch Eingabe von y
und Drücken von Enter.
WARNUNG! Dadurch werden alle gestoppten Container entfernt.
Möchten Sie fortfahren? [y/N] y
Die Ausgabe sollte anzeigen, dass der Container ohne env=development
-Label entfernt wurde.
Gelöschte Container:
<container_id_no_label>
Insgesamt freigegebener Speicherplatz: XMB
Listen Sie abschließend alle Container ein letztes Mal auf, um zu bestätigen, dass nur der Container mit dem env=development
-Label übrig bleibt.
docker ps -a --format "{{.Names}}\t{{.Labels}}"
Es sollte nur noch container-label-env
angezeigt werden.
container-label-env env=development