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ónDescripción
-f, --forceFuerza la eliminación de un contenedor en ejecución (usa SIGKILL)
-l, --linkElimina el enlace especificado
-v, --volumesElimina también el Volume anónimo asociado al contenedor
--filter condiciónFiltra 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 app mientras está en ejecución; el mensaje de error indica que debes detener el contenedor o forzar su eliminación.
  • docker rm -f app elimina correctamente el contenedor en ejecución y muestra el nombre del contenedor app.
  • 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 withvol con -v, queda 1.
  • -v sirve 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, old2 y old1, y uno en ejecución, registry.
  • docker container prune -f no 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=exited no devuelve resultados, la sustitución de comandos no proporciona ningún argumento de contenedor.
  • Por eso, docker rm indica que necesita al menos un argumento; para limpiar varios contenedores, puedes usar docker 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
  • --rm hace 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

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