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

BeneficioDescripción
Liberar espacio en discoLas imágenes y volúmenes pueden ocupar varios GB
Liberar memoria RAMContenedores activos consumen recursos
Evitar conflictosPreviene problemas con versiones antiguas
OrganizaciónMantiene solo lo que realmente necesitas
RendimientoMejora 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

bash
# 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

bash
# 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

bash
# 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

bash
# Eliminar contenedores detenidos
docker container prune

# Eliminar TODOS los contenedores (incluyendo activos)
docker rm -f $(docker ps -aq)

📊 Comparativa de comandos

ComandoElimina contenedores detenidosElimina contenedores activosInteractivo
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

bash
# 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

bash
# 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

bash
# 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 volumenContenido¿Se puede eliminar?
pgdataDatos de la base de datos✅ Sí (pierdes datos)
localstack_dataDatos de AWS emulado✅ Sí
node_modulesDependencias de Node✅ Sí (se reinstalan)
Volumen con datos de producciónDatos 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

bash
# LIMPIEZA COMPLETA (¡MUCHO CUIDADO!)
docker system prune -a -f --volumes

📋 Desglose del comando:

Parte del comandoSignificado
docker system pruneLimpiar recursos no utilizados
-aIncluir imágenes no utilizadas
-fForzar sin confirmación
--volumesIncluir volúmenes

🔄 Limpieza paso a paso (recomendado)

bash
# 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?

ComponenteTamaño aproximado
Imágenes de Docker500 MB - 2 GB
Volúmenes100 MB - 1 GB
Contenedores detenidos100 MB - 500 MB
Caché de construcción100 MB - 500 MB
Total800 MB - 4 GB

🔍 Verificar el espacio

bash
# 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

bash
# 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ónComando recomendado
Terminaste de trabajar por hoydocker compose down
El proyecto ya no lo necesitasdocker compose down && docker system prune
Quieres liberar espacio en discodocker system prune -a --volumes
Necesitas empezar desde cerodocker compose down -v && docker compose up --build
Problemas con contenedores específicosdocker rm -f [nombre contenedor]

9.11 Comando Completo para Limpieza

📝 Script de limpieza recomendado

bash
# 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

bash
# 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

bash
# 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:

  1. Detén todos los contenedores con docker compose down

  2. Verifica que no haya contenedores activos

  3. Limpia las imágenes no utilizadas

  4. Elimina los volúmenes del proyecto

  5. Reconstruye el entorno desde cero

🔍 Comandos para verificar:

bash
# 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