9. Bajando contenedores y volúmenes
9: Bajando Contenedores y Volúmenes
Duración estimada: 10 minutos
9.1 Introducción
Es importante saber cómo detener y limpiar nuestro entorno de desarrollo cuando terminamos de trabajar o necesitamos liberar espacio en nuestro computador. En este tutorial, aprenderás a gestionar correctamente tus contenedores y volúmenes.
9.2 ¿Por qué es importante limpiar los contenedores?
🎯 Beneficios de mantener un entorno limpio
| Beneficio | Descripción |
|---|---|
| Liberar espacio en disco | Las imágenes y volúmenes pueden ocupar varios GB |
| Liberar memoria RAM | Contenedores activos consumen recursos |
| Evitar conflictos | Previene problemas con versiones antiguas |
| Organización | Mantiene solo lo que realmente necesitas |
| Rendimiento | Mejora el rendimiento general del sistema |
⚠️ Advertencia: El espacio en disco puede acumularse rápidamente. LocalStack solo puede ocupar varios gigabytes.
9.3 Comandos para Detener Contenedores
🔹 Opción 1: Detener todo el stack
# Detener todos los contenedores del proyecto docker compose down # También elimina la red creada (custom_network) docker compose down --remove-orphans
🔹 Opción 2: Detener un contenedor específico
# Detener un solo contenedor docker stop laravel_app # Detener varios contenedores docker stop laravel_app laravel_postgres laravel_nginx
🔹 Opción 3: Detener todos los contenedores del sistema
# Detener TODOS los contenedores en ejecución docker stop $(docker ps -aq) # Detener con nombre específico docker stop $(docker ps -aq --filter "name=laravel")
9.4 Eliminación de Contenedores
🗑️ Comandos para eliminar
# Eliminar contenedores detenidos docker container prune # Eliminar TODOS los contenedores (incluyendo activos) docker rm -f $(docker ps -aq)
📊 Comparativa de comandos
| Comando | Elimina contenedores detenidos | Elimina contenedores activos | Interactivo |
|---|---|---|---|
docker container prune | ✅ Sí | ❌ No | ✅ Pide confirmación |
docker rm -f $(docker ps -aq) | ✅ Sí | ✅ Sí | ❌ No pregunta |
docker compose down | ✅ Sí | ✅ Sí | ❌ No pregunta |
9.5 Eliminación de Imágenes
🖼️ Limpiar imágenes de Docker
# Eliminar imágenes no utilizadas docker image prune # Eliminar TODAS las imágenes docker image prune -a # Eliminar imágenes específicas docker rmi laravel_app:latest docker rmi nginx:alpine
🔍 Verificar imágenes existentes
# Ver todas las imágenes docker images # Ver imágenes con filtro docker images | grep laravel # Ver tamaño de imágenes docker images --format "table {{.Repository}}\t{{.Size}}"
9.6 Eliminación de Volúmenes
📦 Limpiar volúmenes
# Eliminar volúmenes no utilizados docker volume prune # Eliminar TODOS los volúmenes docker volume prune -a # Eliminar un volumen específico docker volume rm pgdata docker volume rm localstack_data
⚠️ Cuidado con los volúmenes
| Tipo de volumen | Contenido | ¿Se puede eliminar? |
|---|---|---|
pgdata | Datos de la base de datos | ✅ Sí (pierdes datos) |
localstack_data | Datos de AWS emulado | ✅ Sí |
node_modules | Dependencias de Node | ✅ Sí (se reinstalan) |
| Volumen con datos de producción | Datos críticos | ❌ NO |
💡 Consejo: Los volúmenes de PostgreSQL contienen datos. Si borras
pgdata, perderás toda tu base de datos local.
9.7 Limpieza Completa del Sistema
🧹 Comando para limpieza total
# LIMPIEZA COMPLETA (¡MUCHO CUIDADO!) docker system prune -a -f --volumes
📋 Desglose del comando:
| Parte del comando | Significado |
|---|---|
docker system prune | Limpiar recursos no utilizados |
-a | Incluir imágenes no utilizadas |
-f | Forzar sin confirmación |
--volumes | Incluir volúmenes |
🔄 Limpieza paso a paso (recomendado)
# Paso 1: Detener contenedores docker compose down # Paso 2: Eliminar imágenes no utilizadas docker image prune -a # Paso 3: Eliminar volúmenes no utilizados docker volume prune -a # Paso 4: Eliminar redes no utilizadas docker network prune # Paso 5: Limpieza general del sistema docker system prune -a
9.8 Liberación de Espacio en Disco
📊 ¿Cuánto espacio puedes liberar?
| Componente | Tamaño aproximado |
|---|---|
| Imágenes de Docker | 500 MB - 2 GB |
| Volúmenes | 100 MB - 1 GB |
| Contenedores detenidos | 100 MB - 500 MB |
| Caché de construcción | 100 MB - 500 MB |
| Total | 800 MB - 4 GB |
🔍 Verificar el espacio
# Ver espacio usado por Docker docker system df # Ver detalle de uso docker system df -v # Ver espacio total en disco df -h # Linux/Mac # En Windows: Administración de discos
9.9 Comandos de Verificación
✅ Verificar que todo se haya eliminado
# Ver contenedores (debería estar vacío) docker ps -a # Ver imágenes (debería estar vacío) docker images # Ver volúmenes (debería estar vacío) docker volume ls # Ver redes (solo redes por defecto) docker network ls
9.10 Escenarios de Uso
📌 Cuándo usar cada comando
| Situación | Comando recomendado |
|---|---|
| Terminaste de trabajar por hoy | docker compose down |
| El proyecto ya no lo necesitas | docker compose down && docker system prune |
| Quieres liberar espacio en disco | docker system prune -a --volumes |
| Necesitas empezar desde cero | docker compose down -v && docker compose up --build |
| Problemas con contenedores específicos | docker rm -f [nombre contenedor] |
9.11 Comando Completo para Limpieza
📝 Script de limpieza recomendado
# Crear un archivo de script (clean-docker.sh) #!/bin/bash echo "🧹 Iniciando limpieza de Docker..." # Detener y eliminar contenedores del proyecto echo "📦 Deteniendo y eliminando contenedores..." docker compose down # Eliminar imágenes no utilizadas echo "🖼️ Eliminando imágenes no utilizadas..." docker image prune -a -f # Eliminar volúmenes no utilizados echo "📀 Eliminando volúmenes no utilizados..." docker volume prune -a -f # Eliminar redes no utilizadas echo "🌐 Eliminando redes no utilizadas..." docker network prune -f # Limpieza general echo "🧹 Limpieza general del sistema..." docker system prune -a -f echo "✅ Limpieza completada con éxito!" # Mostrar espacio liberado docker system df
🚀 Ejecutar el script
# Dar permisos de ejecución chmod +x clean-docker.sh # Ejecutar ./clean-docker.sh
9.12 Precauciones Importantes
⚠️ Antes de limpiar
- □
¿Ya guardaste tus cambios en Git?
- □
¿Necesitas los datos de la base de datos?
- □
¿Tienes respaldo de archivos importantes?
- □
¿Estás seguro de que no necesitas las imágenes?
🚫 No ejecutar si:
Estás trabajando en producción
Tienes datos que no están en control de versiones
Compartes el entorno con otros desarrolladores
Tienes servicios críticos en ejecución
9.13 Reconstrucción del Entorno
🔄 Cómo volver a levantar todo
# Después de la limpieza, reconstruir desde cero docker compose up --build -d # Verificar que todo funciona docker compose ps
📝 Ejercicio de la Clase
Para practicar la gestión de contenedores:
Detén todos los contenedores con
docker compose downVerifica que no haya contenedores activos
Limpia las imágenes no utilizadas
Elimina los volúmenes del proyecto
Reconstruye el entorno desde cero
🔍 Comandos para verificar:
# Paso 1: Ver contenedores activos docker ps # Paso 2: Ver contenedores (incluyendo detenidos) docker ps -a # Paso 3: Ver imágenes docker images # Paso 4: Ver volúmenes docker volume ls # Paso 5: Reconstruir docker compose up --build -d
📚 Recursos Adicionales
¡Excelente! Ahora sabes cómo gestionar tu entorno Docker. En el próximo tutorial, comenzaremos a construir nuestra aplicación Laravel
Comentarios
Publicar un comentario