ich kann schreiben
docker images --filter "dangling=true"
Welche anderen Filter kann ich verwenden?
Kann ich so etwas benutzen?
docker images --filter "running=false"
Antworten:
Docker v1.13.0 unterstützt die folgenden Bedingungen:
-f, --filter value Filter output based on conditions provided (default [])
- dangling=(true|false)
- label=<key> or label=<key>=<value>
- before=(<image-name>[:tag]|<image-id>|<image@digest>)
- since=(<image-name>[:tag]|<image-id>|<image@digest>)
- reference=(pattern of an image reference)
Oder verwenden Sie grep
, um Bilder nach einem bestimmten Wert zu filtern:
$ docker images | grep somevalue
docker images -f "reference=*/*/*latest"
- Dies würde Ihnen so etwas bringen k8s:30000/github/someImage:latest
. oder docker images -f "reference=*/*latest"
würde dich bekommen k8s:30000/someImage:latest
. wenn Sie diese aufräumen wollen -docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Sie können das REPOSITORY
Argument auch verwenden docker images
, um die Bilder zu filtern.
Angenommen, wir haben die Bilder:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local-foo latest 17864104b328 2 months ago 100 MB
example.com/bar latest b94c37de2801 9 months ago 285 MB
example.com/baz latest a004e3ac682c 2 years ago 221 MB
Wir können explizit nach allen Bildern mit einem bestimmten Namen filtern:
$ docker images example.com/bar
REPOSITORY TAG IMAGE ID CREATED SIZE
example.com/bar latest b94c37de2801 9 months ago 285 MB
Docker unterstützt auch Globbing:
$ docker images "example.com/*"
REPOSITORY TAG IMAGE ID CREATED SIZE
example.com/bar latest b94c37de2801 9 months ago 285 MB
example.com/baz latest a004e3ac682c 2 years ago 221 MB
*
Platzhalterzeichen /
im Repository-Namen nicht gilt . Daher ist latest
der Befehl im letzten Beispiel docker images --filter=reference='*:latest'
falsch , um alle Bilder mit Tag aufzulisten. Richtiger Befehl ist docker images --filter=reference='*/*:latest'
.
--filter name=something
- und die ganze Zeit war die einfache Lösung, dass Sie überhaupt keinen (n expliziten) Filter benötigen!
openapitools/openapi-generator-cli
, docker images open*
werden Sie es nicht finden. Aber docker images open*/*
ich werde es finden.
In Docker v1.7:
Die derzeit unterstützten Filter sind:
true
oder false
)label=<key>
oder label=<key>=<value>
)before=<image-name>[:tag]|<image-id>|<image@digest>
&since=(<image-name>[:tag]|<image-id>|<image@digest>)
Für mich,
docker images -q | while read IMAGE_ID; do
docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done
hat den Trick gemacht. Der Befehl date kann über eine Ausgabe im gleichen Format erzeugen
date -Ins --date='10 weeks ago'
Dadurch kann ich Zeitstempel vergleichen. Ich benutze den Filter immer noch, um Bilder zu baumeln.
sudo docker images --filter "running = false"
Zum Reinigen alter gestoppter Behälter können Sie Folgendes verwenden:
docker container prune
So entfernen Sie Bilder ohne Tags:
docker image prune
Es gibt ein weiteres Beispiel, das mit Version 17.09 ++ funktioniert:
sudo docker rmi $(sudo docker images -f=reference="registry.gitlab.com/example-app" -f "dangling=true" -q)
Erläuterung:
reference
- Wir referenzieren Bilder nach dem Namen des Repositorys.dangling=true
- Wir entfernen Bilder ohne Tags.-q
- bedeutet leise und zeigt nur numerische IDs von Bildern anstelle einer ganzen Zeile.Dieser Befehl entfernt alle Bilder, die den Repository-Namen "registry.gitlab.com/example-app" haben und nicht markiert sind ( <none>
in einer Tag-Spalte).
Referenzlink: https://docs.docker.com/engine/reference/commandline/images/#filtering