Docker aufräumen

In der neuen Version 1.13 von Docker wurde dessen Kommandozeilenwerkzeug grundlegend überarbeitet. Die zahlreichen Befehle sind nun besser strukturiert. Neu hinzugekommen sind außerdem Kommandos zum Aufräumen alter Images und Container. Doch was, wenn man noch nicht aktualisieren möchte?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 3 Min.
Von
  • Golo Roden

In der neuen Version 1.13 von Docker wurde dessen Kommandozeilenwerkzeug grundlegend überarbeitet. Die zahlreichen Befehle sind nun besser strukturiert. Neu hinzugekommen sind außerdem Kommandos zum Aufräumen alter Images und Container. Doch was, wenn man noch nicht aktualisieren möchte?

Seit der Erstveröffentlichung von Docker vor einigen Jahren sind zahlreiche Möglichkeiten hinzugekommen. Um diese steuern zu können, wurde das Kommandozeilenwerkzeug regelmäßig um neue Befehle und Optionen erweitert. Im Lauf der Zeit hat dabei die Übersichtlichkeit gelitten.

Deshalb führt die neue Version eine überarbeitete Struktur ein, die für mehr Übersicht sorgt. Die einzelnen Kommandos sind nun gruppiert, sodass beispielsweise das bisherige Kommando

$ docker images

nun als

$ docker image list

aufzurufen ist. Die alten Kommandos bleiben vorerst erhalten, Docker empfiehlt aber eindeutig die Verwendung der neuen Syntax. Das legt nahe, dass die alten Kommandos über kurz oder lang entfallen werden:

"These changes let us clean up the Docker CLI syntax, improve help text and make Docker simpler to use. The old command syntax is still supported, but we encourage everybody to adopt the new syntax."

In der neuen Version wurden allerdings nicht nur die bestehenden Kommandos neu strukturiert, es sind auch neue Befehle und Optionen hinzugekommen. Besonders praktisch sind die beiden neuen Kommandos, die sich im Bereich system finden, nämlich

$ docker system df

und:

$ docker system prune

Während das erste den Speicherplatzbedarf von Containern, Images und Volumes anzeigt, entfernt das zweite all jene Elemente, die nicht mehr benötigt werden. Dazu zählen alle angehaltenen Container und nicht mehr verwendete Images, Volumes und Netzwerke. Die Pflege eines Docker-Systems wird dadurch deutlich vereinfacht.

Ebenfalls neu ist, dass das Kommandozeilenwerkzeug endlich auch mit älteren Versionen des Docker-Servers zurecht kommt, sodass die lästige Fehlermeldung

"Error response from daemon: client is newer than server"

endlich der Vergangenheit angehören dürfte. Allerdings funktionieren die neuen system-Kommandos nur dann, wenn auch der Server in Version 1.13 vorliegt.

Für ältere Docker-Versionen gibt es jedoch einen Workaround, mit dem sich ungefähr der gleiche Effekt erzielen lässt, wenn auch ein wenig umständlicher. Dazu sind lediglich einige Aufrufe auf der Kommandozeile erforderlich:

# Remove exited containers
$ docker ps --filter status=dead --filter status=exited -aq | \
xargs docker rm -v

# Remove unused images
$ docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | \
xargs docker rmi

# Remove unused volumes
$ docker volume ls -qf dangling=true | xargs docker volume rm

Richtet man sich Aliase für diese Kommandos ein, lässt sich das Aufräumen noch etwas komfortabler gestalten.

tl;dr: Die Kommandos von Docker 1.13 wurden neu strukturiert. Außerdem gibt es neben einigen weiteren Annehmlichkeiten zwei neue Befehle, die das Aufräumen eines Docker-Servers erleichtern. Mit etwas Aufwand lässt sich der gleiche Effekt aber auch für ältere Versionen bewirken. ()