Contenido
Tutorial de docker rmi: eliminar imágenes y etiquetas (-f, image prune)
docker rmi (alias de docker image rm) elimina etiquetas de imágenes o imágenes sin usar; si un contenedor usa una imagen, normalmente se produce un error conflict. Consulta Liberar espacio en disco para saber cómo limpiar imágenes y espacio en disco.
Sintaxis
docker rmi [opciones] imagen [imagen...]
docker image rm [opciones] imagen [imagen...]
Opciones
| Opción | Descripción |
|---|---|
-f, --force | Fuerza la eliminación de la imagen |
--no-prune | No elimina las imágenes padre sin etiqueta |
--platform cadena | Elimina solo la variante de la plataforma especificada, por ejemplo, linux/amd64 |
Opciones de docker image prune:
| Opción | Descripción |
|---|---|
-a, --all | Elimina todas las imágenes sin usar, no solo las imágenes dangling |
--filter condición | Proporciona un criterio de filtro, por ejemplo, until=<timestamp> |
-f, --force | No solicita confirmación |
Ejemplos
En los siguientes ejemplos se usan las imágenes alpine, demo/app, redis y registry. Algunas etiquetas apuntan al mismo ID de imagen.
Eliminar una etiqueta y encontrar un conflicto
$ docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:3.23 ff7f0c727dd7 26.6MB 8.21MB
alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0 85fe1e81d675 13MB 3.94MB
demo/app:1.0 ff7f0c727dd7 26.6MB 8.21MB
demo/app:2.0 ff7f0c727dd7 26.6MB 8.21MB
localhost:5000/tools/alpine:3.23 ff7f0c727dd7 26.6MB 8.21MB
localhost:5000/tools/alpine:latest ff7f0c727dd7 26.6MB 8.21MB
redis:8-alpine 0bf6577d7774 161MB 39.6MB U
registry:3 01cd312e6702 86.9MB 20.7MB U
$ docker rmi demo/app:1.0
Untagged: demo/app:1.0
$ docker rmi redis:8-alpine
Error response from daemon: conflict: unable to delete redis:8-alpine (must be forced) - container 0663b06bc225 is using its referenced image 0bf6577d7774
- Después de eliminar
demo/app:1.0, se muestraUntaggedporque el mismo ID de imagen tiene otras etiquetas. redis:8-alpineestá en uso por un contenedor. Si intentas eliminarla directamente, recibirás un error conflict que también indica el ID del contenedor y el de la imagen.- La
Uen el campoEXTRAindica que la imagen está en uso.
Forzar la eliminación de una etiqueta con -f
$ docker rmi -f redis:8-alpine
Untagged: redis:8-alpine
$ docker ps -a --filter name=uses-redis
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0663b06bc225 0bf6577d7774 "docker-entrypoint.s…" 3 seconds ago Up 3 seconds 6379/tcp uses-redis
$ docker rmi nosuch:image
Error response from daemon: No such image: nosuch:image
-fquitó correctamente la etiquetaredis:8-alpine; el contenedor que aparece después sigue en ejecución, lo que demuestra que forzar la eliminación de una etiqueta no detiene el contenedor.- Si intentas eliminar el nombre de una imagen inexistente, se devuelve
No such image. - Después de forzar la eliminación, la imagen puede permanecer localmente con la etiqueta
<none>; puedes revisar el uso detallado condocker system df -v.
Eliminar imágenes dangling y todas las imágenes sin usar
$ docker image prune -f
Total reclaimed space: 0B
$ docker image prune -a -f
Deleted Images:
untagged: alpine:3.23
untagged: alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
deleted: sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
deleted: sha256:1f3591b8a02ea153f41c5bba878ad477f63ab3d19349762cb77504db02a23e15
deleted: sha256:c3709935ef4cf35769588b317a43fa75b70a7ee51af2d449069ba66e956a0f44
untagged: localhost:5000/tools/alpine:3.23
untagged: localhost:5000/tools/alpine:latest
untagged: demo/app:2.0
deleted: sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63
deleted: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
deleted: sha256:74a5b9d36e2dbe5329330986093322eb7619d9d5ebbc916392cf686d0e7381ce
deleted: sha256:8793abc479381bafd16c9d538b01c5a8dd7eef6aa10a737f2ad828ac73cb80e9
deleted: sha256:6d423cc7d2471ec6b5d77eaa820bc0808c1213c56c6fb88ccab237a486ecab64
Total reclaimed space: 26.7MB
$ docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
registry:3 01cd312e6702 86.9MB 20.7MB U
image prunesin-asolo elimina imágenes dangling; en esta prueba no había elementos que limpiar, por lo que recuperó0B.- Con
-ase eliminan todas las imágenes que no usan los contenedores, incluidas las que aún tienen etiquetas;registry:3, que sigue en uso, permanece. - Docker 29 suele dejar menos imágenes dangling de forma predeterminada, por lo que
image prunenormalmente no recupera espacio. Para eliminar todas las imágenes sin usar, puedes usar-a.
Revisar imágenes <none> y limpiar con system prune
$ docker system df -v | head -20
Images space usage:
REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
myweb snapshot 56e3f92534ca 7 seconds ago 92.1MB 0B 92.08MB 0
nginx 1.30-alpine 47928bf67eb6 3 days ago 93.5MB 12.94MB 80.6MB 1
registry 3 01cd312e6702 3 days ago 86.9MB 12.94MB 73.93MB 1
<none> <none> 0bf6577d7774 3 days ago 161MB 12.93MB 147.6MB 0
alpine 3.23 ff7f0c727dd7 3 days ago 13MB 12.93MB 86.86kB 1
Containers space usage:
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES
0c009f73010b alpine:3.23 "sleep 600" 0 4.1kB 42 seconds ago Up 41 seconds small
63b9a2f9c63f nginx:1.30-alpine "/docker-entrypoint.…" 0 115kB 44 seconds ago Up 43 seconds web
35357aad74b1 registry:3 "/entrypoint.sh /etc…" 1 20.5kB 2 minutes ago Up 2 minutes registry
Local Volumes space usage:
VOLUME NAME LINKS SIZE
21ea99090ddead0461eb5a6efd670e1d9cf58fe9c23d5f8618db5868fb6170aa 1 3.854MB
$ docker system prune -f
Deleted Images:
untagged: sha256:0bf6577d7774e592b29d093e3ac9390eb91e13d72c21e506afce736de5e0eeb0
deleted: sha256:0bf6577d7774e592b29d093e3ac9390eb91e13d72c21e506afce736de5e0eeb0
deleted: sha256:16b124a2d3eacd620d917ead6fd26cbf1f1d7117fa94122398971931cfe2d403
deleted: sha256:f79a7876c6644b273e4eec899344e51c66959237a2f71188db8cb98d7311521c
Total reclaimed space: 147.6MB
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 3 272.6MB 92.08MB (33%)
Containers 3 3 139.3kB 0B (0%)
Local Volumes 1 1 3.854MB 0B (0%)
Build Cache 0 0 0B 0B
docker system df -vmuestra la imagen<none>:<none>con ID0bf6577d7774. Ningún contenedor la usa, pero ocupa161MB, de los cuales147.6MBson espacio exclusivo.docker system prune -felimina esta imagen y sus datos relacionados, y recupera147.6MB; después, el uso de Images baja de420.2MBa272.6MB.system prunelimpia otros datos de Docker que no se usan; si solo quieres eliminar imágenes, usadocker image prune.
Capítulos relacionados
Ejercicios
Ejercicio: intenta primero eliminar redis:8-alpine; después, usa -f para quitar su etiqueta y confirma que el contenedor uses-redis que usa esa imagen sigue en ejecución.
Respuesta
docker rmi redis:8-alpine
docker rmi -f redis:8-alpine
docker ps -a --filter name=uses-redis
Preguntas frecuentes
¿Son distintos docker rmi y docker image rm?
No. docker rmi, docker image rm y docker image remove son alias del mismo comando.
¿Se puede eliminar directamente una imagen que usa un contenedor en ejecución?
Por lo general, la eliminación devuelve un error conflict que indica qué contenedor usa la imagen. Con -f puedes quitar la etiqueta de la imagen; en la prueba, el contenedor siguió en ejecución.
¿Qué diferencia hay entre docker image prune y docker image prune -a?
Sin -a, solo se eliminan las imágenes dangling; con -a, se eliminan todas las imágenes que no usan los contenedores. En la prueba con Docker 29, prune sin opciones recuperó 0B, mientras que -a eliminó las imágenes sin usar.
Después de eliminar con -f una imagen que usa un contenedor, ¿se puede liberar?
docker system df -v muestra que la imagen permanece con la etiqueta <none>; en la prueba, docker system prune -f la eliminó y recuperó 147.6MB.
Actualizado 26 de octubre de 2026