Compartir comentarios
Las respuestas se generan en base a la documentación.

docker system prune

DescripciónRemove unused data
Usodocker system prune [OPTIONS]

Descripción

Elimina todos los contenedores, redes e imágenes no utilizados (tanto los no etiquetados como los no utilizados) y, opcionalmente, los volúmenes.

Opciones

OpciónPredeterminadoDescripción
-a, --allElimina todas las imágenes no utilizadas, no solo las que no tienen etiquetas (dangling)
--filterAPI 1.28+ Proporciona valores de filtrado (por ejemplo, label=<clave>=<valor>)
-f, --forceNo solicita confirmación
--volumesElimina (prune) los volúmenes anónimos

Ejemplos

$ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - unused build cache
Are you sure you want to continue? [y/N] y

Deleted Containers:
f44f9b81948b3919590d5f79a680d8378f1139b41952e219830a33027c80c867
792776e68ac9d75bce4092bc1b5cc17b779bc926ab04f4185aec9bf1c0d4641f

Deleted Networks:
network1
network2

Deleted Images:
untagged: hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
deleted: sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57
deleted: sha256:45761469c965421a92a69cc50e92c01e0cfa94fe026cdd1233445ea00e96289a

Total reclaimed space: 1.84kB

Por defecto, los volúmenes no se eliminan para evitar que se borren datos importantes si actualmente no hay ningún contenedor que los utilice. Utiliza la opción --volumes al ejecutar el comando para eliminar también los volúmenes anónimos:

$ docker system prune -a --volumes

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all anonymous volumes not used by at least one container
        - all images without at least one container associated to them
        - all build cache
Are you sure you want to continue? [y/N] y

Deleted Containers:
0998aa37185a1a7036b0e12cf1ac1b6442dcfa30a5c9650a42ed5010046f195b
73958bfb884fa81fa4cc6baf61055667e940ea2357b4036acbbe25a60f442a4d

Deleted Networks:
my-network-a
my-network-b

Deleted Volumes:
1e31bcd425e913d9f65ec0c3841e9c4ebb543aead2a1cfe0d95a7c5e88bb5026
6a6ab3d6b8d740a1c1d4dbe36a9c5f043dd4bac5f78abfa7d1f2ae5789fe60b0

Deleted Images:
untagged: my-curl:latest
deleted: sha256:7d88582121f2a29031d92017754d62a0d1a215c97e8f0106c586546e7404447d
deleted: sha256:dd14a93d83593d4024152f85d7c63f76aaa4e73e228377ba1d130ef5149f4d8b
untagged: alpine:3.3
deleted: sha256:695f3d04125db3266d4ab7bbb3c6b23aa4293923e762aa2562c54f49a28f009f
untagged: alpine:latest
deleted: sha256:ee4603260daafe1a8c2f3b78fd760922918ab2441cbb2853ed5c439e59c52f96
deleted: sha256:9007f5987db353ec398a223bc5a135c5a9601798ba20a1abba537ea2f8ac765f
deleted: sha256:71fa90c8f04769c9721459d5aa0936db640b92c8c91c9b589b54abd412d120ab
deleted: sha256:bb1c3357b3c30ece26e6604aea7d2ec0ace4166ff34c3616701279c22444c0f3
untagged: my-jq:latest
deleted: sha256:6e66d724542af9bc4c4abf4a909791d7260b6d0110d8e220708b09e4ee1322e1
deleted: sha256:07b3fa89d4b17009eb3988dfc592c7d30ab3ba52d2007832dffcf6d40e3eda7f
deleted: sha256:3a88a5c81eb5c283e72db2dbc6d65cbfd8e80b6c89bb6e714cfaaa0eed99c548

Total reclaimed space: 13.5 MB

Filtrado (--filter)

El formato de la opción de filtrado (--filter) es "clave=valor". Si hay más de un filtro, pasa múltiples opciones (por ejemplo, --filter "foo=bar" --filter "bif=baz").

Cuando se proporcionan múltiples filtros, se combinan de la siguiente manera:

  • Los filtros múltiples con diferentes claves se combinan utilizando la lógica AND. Un elemento debe cumplir todas las condiciones del filtro para ser eliminado.
  • Los filtros múltiples con la misma clave se combinan utilizando la lógica OR. Un elemento se elimina si coincide con cualquiera de los valores de esa clave.

Por ejemplo, --filter "label=foo" --filter "until=24h" elimina los elementos que tienen la etiqueta foo y que fueron creados hace más de 24 horas. Por el contrario, --filter "label=foo" --filter "label=bar" elimina los elementos que tienen la etiqueta foo o bar.

Los filtros admitidos actualmente son:

  • until (<timestamp>) - solo elimina contenedores, imágenes y redes creados antes de la marca de tiempo indicada
  • label (label=<clave>, label=<clave>=<valor>, label!=<clave> o label!=<clave>=<valor>) - solo elimina contenedores, imágenes, redes y volúmenes con (o sin, en caso de utilizar label!=...) las etiquetas especificadas.

El filtro until puede ser marcas de tiempo de Unix, marcas de tiempo con formato de fecha o cadenas de duración de Go admitidas por ParseDuration (por ejemplo, 10m, 1h30m) calculadas con respecto a la hora de la máquina del demonio. Los formatos admitidos para marcas de tiempo con formato de fecha incluyen RFC3339Nano, RFC3339, 2006-01-02T15:04:05, 2006-01-02T15:04:05.999999999, 2006-01-02T07:00 y 2006-01-02. Se utilizará la zona horaria local del demonio si no proporcionas un desfase de zona horaria Z o +-00:00 al final de la marca de tiempo. Al proporcionar marcas de tiempo de Unix, introduce segundos[.nanosegundos], donde segundos es el número de segundos transcurridos desde el 1 de enero de 1970 (medianoche UTC/GMT), sin contar los segundos intercalares (también conocido como Unix epoch o Unix time), y el campo opcional .nanosegundos es una fracción de segundo de no más de nueve dígitos de longitud.

El filtro label admite dos formatos. Uno es el label=... (label=<clave> o label=<clave>=<valor>), que elimina contenedores, imágenes, redes y volúmenes con las etiquetas especificadas. El otro formato es label!=... (label!=<clave> o label!=<clave>=<valor>), que elimina contenedores, imágenes, redes y volúmenes sin las etiquetas especificadas.