Aplicaciones Prácticas del Filtrado de Contenedores
En este paso, exploraremos aplicaciones prácticas del filtrado de contenedores para realizar tareas comunes de gestión de Docker. Estos ejemplos demuestran cómo el filtrado se puede usar en escenarios del mundo real para que la gestión de contenedores sea más eficiente.
Encontrar y Reiniciar Contenedores Específicos
Digamos que necesita reiniciar todos los contenedores relacionados con la web. Puede usar el filtrado por nombre para identificarlos y luego reiniciarlos:
## Primero, identifique los contenedores web
docker ps --filter name=web
## Ahora, reinícielos uno por uno
docker restart web-frontend
docker restart web-backend
Después de ejecutar estos comandos, debería ver la confirmación de que cada contenedor se reinició:
web-frontend
web-backend
Encontrar y Eliminar Todos los Contenedores con un Patrón de Nombre Específico
Si necesita eliminar todos los contenedores con un cierto patrón de nombre, puede combinar el filtrado con la eliminación de contenedores:
## ADVERTENCIA: Esto es solo para demostración. En un entorno real,
## ¡asegúrese de saber lo que está eliminando!
## Enumere los contenedores con "utility" en sus nombres
docker ps -a --filter name=utility
Debería ver su contenedor de utilidad:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26f8c661f7a5 alpine "sleep 1000" 45 minutes ago Up 45 minutes utility-alpine
Para eliminarlo, normalmente usaría:
## Realmente no ejecutaremos este comando para preservar nuestro entorno de laboratorio
## docker rm -f $(docker ps -aq --filter name=utility)
En cambio, veamos cómo funciona este comando:
## Solo obtenga los ID que se verían afectados
docker ps -aq --filter name=utility
Esto mostrará el ID del contenedor:
26f8c661f7a5
Usando el Filtrado para Monitorear Grupos de Contenedores Específicos
El filtrado de contenedores es útil para la monitorización dirigida. Creemos un script de monitorización simple que compruebe el estado de nuestros contenedores web:
nano web-monitor.sh
Agregue el siguiente script:
#!/bin/bash
## This script checks the status of web containers and reports if any are not running
echo "=== Web Container Status Check ==="
docker ps -a --filter name=web --format "{{.Names}}: {{.Status}}"
## Count stopped web containers
STOPPED=$(docker ps -a --filter name=web --filter status=exited --format "{{.Names}}" | wc -l)
if [ $STOPPED -gt 0 ]; then
echo -e "\nWARNING: $STOPPED web containers are not running!"
else
echo -e "\nAll web containers are running normally."
fi
Guarde el archivo (Ctrl+O, Enter, luego Ctrl+X) y hágalo ejecutable:
chmod +x web-monitor.sh
Ahora, ejecute el script para ver el estado de sus contenedores web:
./web-monitor.sh
Debería ver una salida similar a:
=== Web Container Status Check ===
web-backend: Up 50 minutes
web-frontend: Up 50 minutes
All web containers are running normally.
Filtrado en Tuberías CI/CD
En las tuberías CI/CD, el filtrado de contenedores puede ser esencial para las pruebas y el despliegue automatizados. Creemos un script que simule un proceso de despliegue que se dirige solo a los contenedores con un patrón de nombre específico:
nano deploy-update.sh
Agregue el siguiente script:
#!/bin/bash
## This script simulates updating all containers of a specific type
TARGET_CONTAINERS=$1
if [ -z "$TARGET_CONTAINERS" ]; then
echo "Usage: $0 <container-name-pattern>"
exit 1
fi
echo "Preparing to update containers matching pattern: $TARGET_CONTAINERS"
echo "Containers affected:"
docker ps --filter name=$TARGET_CONTAINERS --format "{{.Names}}"
echo -e "\nIn a real deployment, this would:"
echo "1. Pull the latest images"
echo "2. Stop each container"
echo "3. Start new containers with the updated images"
echo "4. Verify the containers are running correctly"
echo -e "\nSimulation completed successfully!"
Guarde el archivo (Ctrl+O, Enter, luego Ctrl+X) y hágalo ejecutable:
chmod +x deploy-update.sh
Ahora, simulemos la actualización de nuestros contenedores web:
./deploy-update.sh web
Debería ver una salida similar a:
Preparing to update containers matching pattern: web
Containers affected:
web-backend
web-frontend
In a real deployment, this would:
1. Pull the latest images
2. Stop each container
3. Start new containers with the updated images
4. Verify the containers are running correctly
Simulation completed successfully!
Estos ejemplos prácticos demuestran cómo el filtrado de contenedores se puede integrar en su flujo de trabajo de Docker para que la gestión de contenedores sea más eficiente y automatizada.