Cómo usar el filtro de imágenes de Docker

83

puedo escribir

docker images --filter "dangling=true"

¿Qué otros filtros puedo utilizar?

¿Puedo usar algo como esto?

docker images --filter "running=false"
Montells
fuente

Respuestas:

87

Docker v1.13.0 admite las siguientes condiciones:

  -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)

O use greppara filtrar imágenes por algún valor:

$ docker images | grep somevalue

Referencias

estudiar
fuente
5
Actualice su respuesta; actualmente, a partir de febrero de 2017, admite algunos parámetros más.
Greg Dubicki
5
No es perfecto, pero con lo anterior puede hacer cosas como docker images -f "reference=*/*/*latest": Esto le proporcionaría algo parecido k8s:30000/github/someImage:latest. o docker images -f "reference=*/*latest"te atraparía k8s:30000/someImage:latest. si desea limpiarlos -docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Mark_Eng
¿Cómo podemos excluir determinadas imágenes por nombre de repositorio?
variable
40

También puede utilizar el REPOSITORYargumento docker imagespara filtrar las imágenes.

Por ejemplo, supongamos que tenemos las imágenes:

$ 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

Podemos filtrar explícitamente todas las imágenes con un nombre determinado:

$ docker images example.com/bar
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
example.com/bar      latest       b94c37de2801     9 months ago    285 MB

Docker también admite 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

Documentos oficiales aquí .

Wilfred Hughes
fuente
3
Tenga en cuenta que el *carácter comodín no se aplica /en el nombre del repositorio. Por lo tanto, en el último ejemplo, para enumerar todas las imágenes con etiqueta, latestel comando docker images --filter=reference='*:latest'es incorrecto. El comando correcto es docker images --filter=reference='*/*:latest'.
Tomáš Záluský
Todo este tiempo estuve buscando --filter name=something, y todo el tiempo, ¡la solución simple fue que no necesita un filtro (n explícito) en absoluto!
tripleee
2
Para aquellos que todavía están desconcertados ... Si estás buscando la imagen openapitools/openapi-generator-cli, docker images open*no la encontrarás. Pero docker images open*/*lo encontraré.
Ryan Lundy
12

En Docker v1.7:

Los filtros admitidos actualmente son:

  • colgando (booleano - trueo false)
  • etiqueta ( label=<key>o label=<key>=<value>)
Ertuğrul Altınboğa
fuente
1
A partir de Docker v1.12, puede filtrar con before=<image-name>[:tag]|<image-id>|<image@digest>&since=(<image-name>[:tag]|<image-id>|<image@digest>)
xwlee
6

Para mi,

docker images -q | while read IMAGE_ID; do
    docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done

Hizo el truco. El comando de fecha puede producir una salida en el mismo formato a través de

date -Ins --date='10 weeks ago'

lo que me permite comparar marcas de tiempo. Sin embargo, sigo usando el filtro para colgar imágenes por conveniencia.

wmbolle
fuente
0

Hay otro ejemplo, funciona con la versión 17.09 ++:

sudo docker rmi $(sudo docker images -f=reference="registry.gitlab.com/example-app" -f "dangling=true" -q)

Explicación:

  • reference - estamos referenciando imágenes por nombre de repositorio;
  • dangling=true - estamos eliminando imágenes sin etiquetar;
  • -q - significa silencioso, mostrando solo identificaciones numéricas de imágenes, en lugar de una línea completa.

Este comando elimina todas las imágenes que tienen un nombre de repositorio "registry.gitlab.com/example-app" y sin etiquetar (tienen <none>en una columna de etiqueta)

Enlace de referencia: https://docs.docker.com/engine/reference/commandline/images/#filtering

Alexander Kim
fuente