Ich persönlich empfehle daher, dies als Teil Ihres Bereitstellungsskripts für Images und Container zu tun und nur die neuesten n Container und Images beizubehalten. Ich markiere meine Docker-Images mit demselben Versionsschema, mit dem ich sie verwende, und git tag
markiere das neueste Docker-Image immer mit "Neueste". Dies bedeutet, dass meine Docker-Bilder ohne Bereinigung wie folgt aussehen:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
some_repo/some_image 0.0.5 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image latest 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image 0.0.4 0beabfa514ea 45 hours ago 925.4 MB
some_repo/some_image 0.0.3 54302cd10bf2 6 days ago 978.5 MB
some_repo/some_image 0.0.2 0078b30f3d9a 7 days ago 978.5 MB
some_repo/some_image 0.0.1 sdfgdf0f3d9a 8 days ago 938.5 MB
Jetzt möchte ich natürlich nicht, dass alle meine Bilder (oder Container) auf allen meinen Produktionsboxen auf Dauer zurückkehren. Ich möchte nur die letzten 3 oder 4 für Rollbacks und um alles andere loszuwerden. Unix tail
ist dein bester Freund hier. Da docker images
und docker ps
beide nach Datum sortieren, können wir nur tail
alle außer den ersten drei auswählen und entfernen:
docker rmi $(docker images -q | tail -n +4)
Führen Sie dies zusammen mit Ihren Bereitstellungsskripten (oder lokal) aus, um immer gerade genug Bilder zu behalten, damit Sie bequem zurücksetzen können, ohne zu viel Platz zu beanspruchen oder Dinge mit alten Bildern zu überladen.
Persönlich habe ich immer nur einen Container auf meiner Produktionsbox, aber Sie können das Gleiche mit Containern tun, wenn Sie mehr wollen:
docker rm $(docker ps -aq | tail -n +4)
Schließlich haben wir es in meinem vereinfachten Beispiel immer nur mit einem Repository zu tun, aber wenn Sie mehr hatten, können Sie mit derselben Idee nur ein bisschen ausgefeilter werden. Angenommen, ich möchte nur die letzten drei Bilder von some_repo / some_image behalten. Ich kann einfach mischen grep
und awk
und sein auf dem Weg:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Auch hier gilt die gleiche Idee für Container, aber Sie bekommen sie zu diesem Zeitpunkt, sodass ich keine Beispiele mehr geben werde.