Eliminar contenedores
Eliminar un contenedor lo borra de la lista de Docker de forma permanente. Su nombre queda libre y todo lo que vivía solo dentro del contenedor se pierde.
Por eso esta lección no empieza con la eliminación. Sigue un ritual fijo: mirar, detener, eliminar y verificar. Aplícalo en ese orden cada vez que borres.
Antes de empezar
Sección titulada «Antes de empezar»Necesitas el contenedor web de las lecciones anteriores. Lee sus logs antes de borrar, como aprendiste en Logs. Si todavía no guardaste una copia, hazlo ahora con la redirección a archivo que explica esa lección. Después de eliminar, los logs desaparecen con el contenedor.
Detener ya lo practicaste en Detener, iniciar y reiniciar. Aquí solo lo usas como paso previo, sin repetir su explicación.
Mira qué contenedores existen
Sección titulada «Mira qué contenedores existen»Empieza con la lista completa, que muestra los que están en ejecución y los detenidos:
docker ps -aCONTAINER ID IMAGE STATUS NAMESa1b2c3d4e5f6 nginx:1.29 Up 2 hours webb7c8d9e0f1a2 nginx:1.29 Exited (0) 2 days ago prueba-viejaLa columna NAMES identifica cada contenedor. Usa el nombre exacto, web, en los comandos siguientes. No adivines a partir del ID: dos contenedores pueden usar la misma imagen y solo el nombre dice cuál es cuál.
La columna STATUS dice si sigue en ejecución o si ya se detuvo. Up significa en ejecución. Exited con un código entre paréntesis significa detenido: 0 indica salida limpia y un número distinto de cero indica fallo. Para leer esos códigos en profundidad, vuelve a Ver y consultar contenedores.
Detén el contenedor si está en ejecución
Sección titulada «Detén el contenedor si está en ejecución»Si web aparece como Up, deténlo primero:
docker stop webstop pide al proceso que termine y deja el contenedor detenido con sus datos intactos, sin borrarlo. El recorrido completo está en Detener, iniciar y reiniciar.
Confirma en dos vistas. Primero, los que están en ejecución:
docker psCONTAINER ID IMAGE STATUS NAMESweb ya no aparece entre los que están en ejecución. La lista vacía confirma que nada sigue corriendo con ese nombre.
Después, la lista completa:
docker ps -aCONTAINER ID IMAGE STATUS NAMESa1b2c3d4e5f6 nginx:1.29 Exited (0) 5 seconds ago webb7c8d9e0f1a2 nginx:1.29 Exited (0) 2 days ago prueba-viejaweb sigue en la lista, ahora detenido. Solo un contenedor detenido se puede eliminar.
Elimina el contenedor cuando tengas certeza
Sección titulada «Elimina el contenedor cuando tengas certeza»Elimina solo cuando el nombre en pantalla coincide con el que quieres borrar y su estado es detenido. Lee la advertencia antes del comando: ejecutarlo no tiene vuelta atrás.
docker rm webDesaparece con el contenedor:
- El contenedor como objeto. Su nombre
webqueda libre para un uso futuro. - Su capa escribible. Todo lo que el proceso escribió en su propio filesystem se pierde.
- Sus logs. Docker los conserva mientras el contenedor existe, incluso detenido, y los borra con él. Por eso Logs pide guardarlos en un archivo antes de llegar aquí.
Sobrevive a la eliminación:
- La imagen
nginx:1.29. Es la plantilla intacta y sirve para crear otro contenedor igual. - Los volúmenes y los archivos montados desde tu máquina. Viven fuera del contenedor, así que
rmno los toca. - Las redes.
rmno elimina ninguna red, solo desconecta el contenedor al borrarlo. - Los demás contenedores.
prueba-viejay cualquier otro siguen exactamente igual.
Comprueba que el contenedor desapareció y la imagen sigue
Sección titulada «Comprueba que el contenedor desapareció y la imagen sigue»Verifica la lista completa:
docker ps -aCONTAINER ID IMAGE STATUS NAMESb7c8d9e0f1a2 nginx:1.29 Exited (0) 2 days ago prueba-viejaNinguna fila se llama web. El contenedor se fue y prueba-vieja sigue ahí, prueba de que solo borraste lo que nombraste.
Verifica la plantilla:
docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx 1.29 a1b2c3d4e5f6 3 weeks ago 188MBnginx:1.29 sigue disponible. Esa es la diferencia observable: el contenedor era una instancia y la imagen es la plantilla que sobrevive.
Errores frecuentes y cómo resolverlos
Sección titulada «Errores frecuentes y cómo resolverlos»Intentar eliminar un contenedor en ejecución
Sección titulada «Intentar eliminar un contenedor en ejecución»Lo que pasó: ejecutas docker rm web con web en estado Up y el demonio se niega.
Error response from daemon: You cannot remove a running container a1b2c3d4e5f6. Stop the container before attempting removal or force removePor qué ocurre: rm solo acepta contenedores detenidos. Así te obliga a confirmar el estado antes de destruir datos.
Cómo comprobarlo: ejecuta docker ps y busca web con estado Up.
Corrección segura: detén primero, verifica con docker ps -a que pasó a Exited y recién entonces repite docker rm web.
docker rm -f detiene y elimina de golpe, pero te salta la verificación y por eso es un mal hábito mientras aprendes.
Nombre con error o contenedor inexistente
Sección titulada «Nombre con error o contenedor inexistente»Lo que pasó: Docker responde que no existe ningún contenedor con ese nombre.
Error response from daemon: No such container: weebPor qué ocurre: hay un error de escritura en el nombre o el contenedor ya se eliminó antes.
Cómo comprobarlo: ejecuta docker ps -a y lee la columna NAMES letra por letra.
Corrección segura: repite el comando con el nombre exacto que muestra la lista. Si la lista ya no contiene web, no hay nada que borrar: el paso ya está hecho.
Querer borrar la imagen mientras un contenedor la usa
Sección titulada «Querer borrar la imagen mientras un contenedor la usa»Lo que pasó: intentas borrar la imagen nginx:1.29 y Docker responde con un conflicto porque un contenedor la referencia.
Por qué ocurre: la imagen es la plantilla compartida. Mientras exista un contenedor creado desde ella, aunque esté detenido, Docker protege la imagen para no dejar esa referencia rota.
Cómo comprobarlo: ejecuta docker ps -a y busca filas que usen nginx:1.29 en la columna IMAGE, incluso con estado Exited.
Corrección segura: en esta lección no toques la imagen. Borrar imágenes y decidir qué espacio liberar pertenece a Limpieza. Aquí basta con saber que el contenedor y la imagen tienen ciclos distintos.
Nunca uses comandos de limpieza general en esta página. La limpieza de lo no usado pertenece a Limpieza.
El ritual completo en una mirada
Sección titulada «El ritual completo en una mirada»- Mirar:
docker ps -amuestra lo que existe. Identifica porNAMES. - Detener:
docker stop webapaga sin borrar. Verifica condocker psydocker ps -a. - Eliminar:
docker rm webborra el contenedor detenido y sus logs. La imagen sobrevive. - Verificar:
docker ps -aya no listawebydocker imagesaún muestranginx:1.29.
Siguiente paso
Sección titulada «Siguiente paso»Continúa con Solución de problemas para investigar en orden fijo, estado y logs primero, antes de cualquier remedio destructivo.