Verwendung des Docker-Bildfilters


83

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:


87

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

Verweise


5
Bitte aktualisieren Sie Ihre Antwort - derzeit werden ab Februar 2017 einige weitere Parameter unterstützt.
Greg Dubicki

5
Es ist nicht perfekt, aber mit den oben genannten können Sie Dinge tun wie 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)
Mark_Eng

Wie können wir bestimmte Bilder nach Reponamen ausschließen?
Variable

40

Sie können das REPOSITORYArgument 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

Offizielle Dokumente hier .


3
Beachten Sie, dass das *Platzhalterzeichen /im Repository-Namen nicht gilt . Daher ist latestder Befehl im letzten Beispiel docker images --filter=reference='*:latest'falsch , um alle Bilder mit Tag aufzulisten. Richtiger Befehl ist docker images --filter=reference='*/*:latest'.
Tomáš Záluský

Die ganze Zeit habe ich gesucht --filter name=something- und die ganze Zeit war die einfache Lösung, dass Sie überhaupt keinen (n expliziten) Filter benötigen!
Tripleee

2
Für diejenigen, die immer noch verblüfft sind ... Wenn Sie nach dem Bild suchen openapitools/openapi-generator-cli, docker images open*werden Sie es nicht finden. Aber docker images open*/*ich werde es finden.
Ryan Lundy

12

In Docker v1.7:

Die derzeit unterstützten Filter sind:

  • baumelnd (boolesch - trueoder false)
  • Etikett ( label=<key>oder label=<key>=<value>)

1
Ab Docker v1.12 können Sie mit before=<image-name>[:tag]|<image-id>|<image@digest>&since=(<image-name>[:tag]|<image-id>|<image@digest>)
xwlee

6

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.



0

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


-1

Zu Ihrer Information, ohne Filter, aber zum Löschen aller Bilder, wenn Sie sie zum Testen oder Lernen verwenden.

Docker-Bild rm -f $ (Docker-Bild ls)

Schöne Grüße.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.