docker-listar-parar-borrar-contenedores

Listar, parar y borrar contenedores

  • 4 min

Ya sabemos crear contenedores. Probablemente, si has seguido los artículos anteriores, hayas lanzado unos cuantos hello-world, algún nginx y quizás un ubuntu.

Y ahora te preguntas: ¿Dónde están? ¿Siguen corriendo? ¿Cómo me deshago de ellos?

Docker no borra nada a menos que tú se lo digas. Un contenedor que ha terminado su tarea no desaparece; se queda en estado “Detenido” (Exited), ocupando espacio en disco y reservando su nombre.

En este artículo vamos a aprender a gestionar el caos y mantener nuestro entorno limpio.

ComandoAcción
docker psLista contenedores encendidos.
docker ps -aLista TODOS (encendidos y parados).
docker stop <id>Apaga un contenedor amablemente.
docker rm <id>Elimina un contenedor parado (borra datos).
docker run --rmCrea un contenedor que se borra solo al terminar.
docker container pruneBorra todos los contenedores parados del sistema.

Listar contenedores (docker ps)

El comando para ver qué está pasando es docker ps (Process Status).

Si ejecutas simplemente:

docker ps
Copied!

Verás solo los contenedores que están encendidos (Running) en este momento.

CONTAINER ID   IMAGE     STATUS          PORTS                NAMES
a1b2c3d4e5     nginx     Up 5 minutes    0.0.0.0:80->80/tcp   mi-web
Copied!

Para ver todos los contenedores, encendidos o no, usamos el flag -a (All):

docker ps -a
Copied!

Ahora verás una lista mucho más larga:

CONTAINER ID   IMAGE         STATUS                     NAMES
a1b2c3d4e5     nginx         Up 5 minutes               mi-web
f9e8d7c6b5     hello-world   Exited (0) 2 hours ago     nervous_bhabha
Copied!

¿Ves ese Exited? Es un contenedor parado. Ocupa poco, pero su capa de escritura sigue en tu disco duro.

Parar contenedores (stop vs kill)

Para detener un contenedor que está corriendo, tenemos dos formas: la “amable” y la “bruta”.

La forma correcta: docker stop

docker stop mi-web
Copied!

Esto envía una señal SIGTERM al proceso principal. Le dice a la aplicación: “Por favor, termina lo que estés haciendo, guarda los datos y ciérrate”. Docker le da 10 segundos de cortesía. Si no se cierra, lo mata.

La forma bruta: docker kill

docker kill mi-web
Copied!

Esto envía un SIGKILL. Es como tirar del cable de la corriente. El proceso muere instantáneamente sin guardar nada.

Úsalo solo si el contenedor se ha quedado colgado y no responde al stop.

Borrar contenedores docker rm

Una vez que un contenedor está parado (Exited), sigue existiendo. Para eliminarlo definitivamente y liberar el espacio de su capa de escritura, usamos rm:

docker rm mi-web
Copied!

Si intentas borrar un contenedor que está encendido (Up), Docker te dará un error:

Error response from daemon: You cannot remove a running container…

Primero debes hacer stop, y luego rm. O usar el flag de fuerza bruta docker rm -f mi-web (no recomendado habitualmente).

Limpieza general (prune)

Si ya es tarde y tienes 50 contenedores parados que te da pereza borrar uno a uno, Docker tiene el comando escoba:

docker container prune
Copied!

Esto borrará de golpe todos los contenedores que estén en estado Exited. Te pedirá confirmación, responderá con el espacio liberado y te quedarás con una sensación de paz interior maravillosa (o no, si te has cargado algo que no querías 😉).