Contenido
Tutorial de docker rm: eliminar contenedores (-f, -v, container prune)
docker rm elimina los contenedores detenidos; puedes usar -f para forzar la eliminación de los que están en ejecución. Consulta el ciclo de vida de un contenedor para ver el proceso completo de creación, detención y eliminación.
Sintaxis
docker rm [opciones] contenedor [contenedor...]
Opciones
| Opción | Descripción |
|---|---|
-f, --force | Fuerza la eliminación de un contenedor en ejecución (usa SIGKILL) |
-l, --link | Elimina el enlace especificado |
-v, --volumes | Elimina también el Volume anónimo asociado al contenedor |
--filter condición | Filtra contenedores, por ejemplo, until=<timestamp> |
docker container prune elimina todos los contenedores detenidos; -f omite el mensaje de confirmación.
Ejemplos
Eliminar contenedores detenidos y en ejecución
$ docker rm app
Error response from daemon: cannot remove container "app": container is running: stop the container before removing or force remove
$ docker rm -f app
app
$ docker rm job
job
- No se puede eliminar directamente
appmientras está en ejecución; el mensaje de error indica que debes detener el contenedor o forzar su eliminación. docker rm -f appelimina correctamente el contenedor en ejecución y muestra el nombre del contenedorapp.- Puedes eliminar directamente el contenedor detenido
job, sin añadir-f.
Eliminar también el Volume anónimo
$ docker volume ls -q | wc -l
2
$ docker rm -f -v withvol
withvol
$ docker volume ls -q | wc -l
1
- Antes de la eliminación, aparecen 2 Volume; después de eliminar
withvolcon-v, queda 1. -vsirve para eliminar el Volume anónimo asociado al contenedor.
Limpiar todos los contenedores detenidos
$ docker ps -a --format '{{.Names}} {{.Status}}'
old2 Exited (0) Less than a second ago
old1 Exited (0) 1 second ago
registry Up About a minute
$ docker container prune -f
Deleted Containers:
1634aa3747102ed4016d3695d9fbe33f9ff7310fde9c5726ef86a340f8d22acb
a3ec6e520acc56ef9f9d78452b104675b7afd070a8e9bd1ab0a010b34e2fe8a5
Total reclaimed space: 8.192kB
- Antes de la eliminación, hay dos contenedores detenidos,
old2yold1, y uno en ejecución,registry. docker container prune -fno solicita confirmación e indica los ID de los contenedores eliminados y el espacio recuperado.- Este comando elimina los contenedores detenidos;
registry, que está en ejecución, no aparece en la lista de eliminación.
La sustitución de comandos no devuelve resultados
$ docker rm $(docker ps -aq --filter status=exited)
docker: 'docker rm' requires at least 1 argument
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]
See 'docker rm --help' for more information
- Si
docker ps -aq --filter status=exitedno devuelve resultados, la sustitución de comandos no proporciona ningún argumento de contenedor. - Por eso,
docker rmindica que necesita al menos un argumento; para limpiar varios contenedores, puedes usardocker container prune -f.
Eliminar automáticamente el contenedor al terminar
$ docker run --rm alpine:3.23 echo 'removed when done'
removed when done
$ docker ps -a --format '{{.Names}} {{.Status}}'
registry Up About a minute
--rmhace que el contenedor se elimine automáticamente cuando termina el comando.- En la lista de contenedores posterior solo aparece
registry, que sigue en ejecución; el contenedor que acaba de terminar ya no aparece.
Secciones relacionadas
- Ciclo de vida de un contenedor
- docker ps: listar y filtrar contenedores
- docker stop: detener un contenedor en ejecución
- Docker Volume: administrar Volume
Ejercicios
Ejercicio: fuerza la eliminación del contenedor app en ejecución y elimina también el Volume anónimo asociado.
Respuesta
docker rm -f -v app
Preguntas frecuentes
¿Por qué docker rm no puede eliminar un contenedor en ejecución?
Primero debes detener el contenedor o forzar su eliminación con docker rm -f; -f usa SIGKILL.
¿Cómo elimino también el Volume anónimo al eliminar un contenedor?
Añade -v, por ejemplo, docker rm -f -v withvol. En el ejemplo, la cantidad de Volume baja de 2 a 1.
¿Qué ocurre si la sustitución de comandos no encuentra contenedores detenidos?
docker rm $(docker ps -aq --filter status=exited) informa que necesita al menos un argumento porque no recibe ningún nombre ni ID de contenedor.
¿Cómo elimino automáticamente un contenedor cuando termina?
Ejecuta docker run --rm; cuando el contenedor del ejemplo termina, docker ps -a deja de mostrarlo.
Actualizado 26 de octubre de 2026