Aquí tienes una lista de comandos para gestionar Docker Compose y optimizar su funcionamiento.
Gestión Básica de Contenedores
Iniciar contenedores
docker-compose up -d # Inicia en modo demonio (en segundo plano)
docker-compose up # Inicia y muestra logs en tiempo real
Ver contenedores en ejecución
docker-compose ps # Lista los contenedores activos de este proyecto
Detener contenedores
docker-compose stop # Detiene los contenedores sin eliminarlos
docker-compose down # Detiene y elimina los contenedores, redes y volúmenes
Reiniciar contenedores
docker-compose restart # Reinicia todos los contenedores
docker-compose restart postgres # Reinicia solo PostgreSQL
Logs y Debugging
Ver logs de los contenedores
docker-compose logs -f # Logs en tiempo real de todos los servicios
docker-compose logs postgres # Logs solo del servicio PostgreSQL
Obtener una sesión interactiva en un contenedor
docker exec -it postgres bash # Abrir terminal dentro del contenedor
Ver errores recientes
docker-compose logs --tail=50 # Últimos 50 logs
Optimización y Rendimiento
Ver consumo de recursos (CPU/RAM)
docker stats # Muestra uso en tiempo real de cada contenedor
Gestión de Redes
Ver redes activas
docker network ls
Inspeccionar detalles de una red
docker network inspect postgres_network
Crear una nueva red y conectar contenedores
docker network create my_network docker network connect my_network postgres
Gestión de Datos y Volúmenes
Listar volúmenes
docker volume ls
Inspeccionar un volumen
docker volume inspect postgres_data
Eliminar volúmenes no utilizados
docker volume prune
Seguridad y Acceso a PostgreSQL
Acceder a la base de datos desde la terminal
docker exec -it postgres psql -U admin -d gisdb
Respaldar la base de datos
docker exec -t postgres pg_dump -U admin gisdb > backup.sql
Restaurar un respaldo
docker exec -i postgres psql -U admin -d gisdb < backup.sql
ista de comandos intermedios para gestionar Docker Compose y optimizar su funcionamiento.
Estos comandos van más allá de lo básico e incluyen opciones para administración eficiente,
troubleshooting y optimización.
Administración y Configuración Avanzada
Ver información detallada de los servicios
docker-compose config # Verifica y muestra la configuración del archivo docker-compose.yml
Ejecutar un comando dentro de un contenedor
docker-compose exec postgres psql -U admin -d gisdb # Acceder a PostgreSQL desde Docker Compose
Ver los procesos en ejecución dentro de un contenedor
docker top postgres # Muestra procesos activos dentro del contenedor PostgreSQL
Inspeccionar detalles completos de un contenedor
docker inspect postgres # Información completa del contenedor PostgreSQL
Optimización de Recursos
Eliminar contenedores detenidos y recursos innecesarios
docker system prune -a # Limpia contenedores, imágenes y volúmenes no utilizados
Recrear contenedores sin detener el servicio
docker-compose up -d --force-recreate # Recrea los contenedores sin detener el servicio completo
Redes y Conectividad
Ver detalles de la red de un servicio
docker network inspect postgres_network # Muestra información sobre la red
Desconectar un contenedor de una red
docker network disconnect my_network postgres
lista de comandos avanzados para gestionar Docker Compose y optimizar su funcionamiento.
Estos comandos están enfocados en seguridad, automatización, debugging, monitoreo y
optimización de recursos.
Gestión Avanzada de Contenedores
Forzar la recreación de contenedores con imágenes nuevas
docker-compose up -d --force-recreate --no-deps postgres
Recrea PostgreSQL sin afectar los demás servicios.
Actualizar contenedores sin detener todo el stack
docker-compose pull # Descarga las versiones más recientes de las imágenes
docker-compose up -d --no-deps postgres # Reinicia solo PostgreSQL con la nueva imagen
Evita downtime innecesario al actualizar servicios individualmente.
Comprobar dependencias entre servicios
docker-compose config --services
Muestra todos los servicios definidos y su estado de dependencia.
Debugging y Logs Detallados
Ver variables de entorno activas en un contenedor
docker-compose exec postgres env
Ayuda a verificar configuraciones y errores de variables de entorno.
Habilitar logs detallados en tiempo real
docker-compose logs --tail=100 --follow
Útil para debugging sin perder el historial de eventos recientes.
Ver logs de PostgreSQL filtrando solo errores
docker-compose logs postgres | grep ERROR
Extrae errores sin ruido innecesario.
Optimización de Recursos
Monitorear el consumo de CPU, RAM y red
docker stats --no-stream
Muestra uso de recursos en un solo snapshot, útil para scripts automatizados.
Limitar consumo de CPU y RAM en docker-compose.yml
deploy:
resources:
limits:
cpus: "1.5"
memory: "1GB"
reservations:
cpus: "1.0"
memory: "512MB"
Redes y Seguridad
Ver puertos abiertos en todos los contenedores
docker-compose ps --services --filter "status=running"
Permite auditar qué servicios están accesibles desde el exterior.
Restringir acceso a una red específica
networks:
postgres_network:
driver: bridge
internal: true
Impide que los servicios sean accesibles desde fuera de la red de Docker.
Listar reglas de firewall activas en contenedores
iptables -L -n -v
Revisa qué conexiones están permitidas y bloqueadas en Docker.
Manejo Avanzado de Volúmenes y Datos
Hacer un respaldo comprimido de PostgreSQL
docker exec postgres pg_dump -U admin gisdb | gzip > backup.sql.gz
Ahorra espacio al guardar respaldos comprimidos.
Restaurar un respaldo comprimido
gunzip -c backup.sql.gz | docker exec -i postgres psql -U admin -d gisdb
Restaura bases de datos de forma eficiente.
Mover datos de un volumen a otro
docker run --rm -v old_volume:/data -v new_volume:/backup alpine sh -c "cp -r /data/* /backup/"
Permite migrar datos entre volúmenes sin perder información.
Auditoría y Seguridad
Escanear vulnerabilidades en imágenes de Docker
docker scan postgis/postgis
Detecta problemas de seguridad en las imágenes de Docker.
Eliminar imágenes antiguas de Docker
docker image prune -a
Libera espacio eliminando imágenes no utilizadas.
Evitar que contenedores se ejecuten con permisos de root
services:
postgres:
user: "1001:1001"
Mejora la seguridad evitando que los contenedores tengan privilegios elevados.
Automatización y Tareas Programadas
Ejecutar comandos dentro de un contenedor desde cron
echo "0 3 * * * docker exec postgres pg_dump -U admin gisdb >
/backups/backup_$(date +\%Y\%m\%d).sql" | crontab -
Programa backups automáticos todos los días a las 3 AM.
Reiniciar servicios automáticamente en caso de fallo
restart: unless-stopped
Garantiza que los servicios se reinicien tras un error o un reinicio del servidor.
Monitoreo Avanzado
Instalar y conectar Prometheus con Docker Compose
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
Monitorea métricas de rendimiento de los contenedores en tiempo real.
Ver eventos de Docker en vivo
docker events
Muestra eventos en tiempo real, útil para troubleshooting en producción.