Aplicações Práticas da Filtragem de Containers
Nesta etapa, exploraremos aplicações práticas da filtragem de containers para realizar tarefas comuns de gerenciamento do Docker. Esses exemplos demonstram como a filtragem pode ser usada em cenários do mundo real para tornar o gerenciamento de containers mais eficiente.
Encontrando e Reiniciando Containers Específicos
Digamos que você precise reiniciar todos os containers relacionados à web. Você pode usar a filtragem por nome para identificá-los e, em seguida, reiniciá-los:
## Primeiro, identifique os containers web
docker ps --filter name=web
## Agora, reinicie-os um por um
docker restart web-frontend
docker restart web-backend
Após executar esses comandos, você deve ver a confirmação de que cada container foi reiniciado:
web-frontend
web-backend
Encontrando e Removendo Todos os Containers com um Padrão de Nome Específico
Se você precisar remover todos os containers com um determinado padrão de nome, pode combinar a filtragem com a remoção de containers:
## AVISO: Isso é apenas para demonstração. Em um ambiente real,
## certifique-se de saber o que você está removendo!
## Liste os containers com "utility" em seus nomes
docker ps -a --filter name=utility
Você deve ver seu container de utilidade:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26f8c661f7a5 alpine "sleep 1000" 45 minutes ago Up 45 minutes utility-alpine
Para removê-lo, você normalmente usaria:
## Nós não executaremos este comando para preservar nosso ambiente de laboratório
## docker rm -f $(docker ps -aq --filter name=utility)
Em vez disso, vamos ver como este comando funciona:
## Apenas obtenha os IDs que seriam afetados
docker ps -aq --filter name=utility
Isso exibirá o ID do container:
26f8c661f7a5
Usando a Filtragem para Monitorar Grupos Específicos de Containers
A filtragem de containers é útil para monitoramento direcionado. Vamos criar um script de monitoramento simples que verifica o status de nossos containers web:
nano web-monitor.sh
Adicione o seguinte 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
Salve o arquivo (Ctrl+O, Enter, então Ctrl+X) e torne-o executável:
chmod +x web-monitor.sh
Agora, execute o script para ver o status de seus containers web:
./web-monitor.sh
Você deve ver uma saída semelhante a:
=== Web Container Status Check ===
web-backend: Up 50 minutes
web-frontend: Up 50 minutes
All web containers are running normally.
Filtragem em Pipelines CI/CD
Em pipelines CI/CD, a filtragem de containers pode ser essencial para testes e implantação automatizados. Vamos criar um script que simula um processo de implantação que visa apenas containers com um padrão de nome específico:
nano deploy-update.sh
Adicione o seguinte 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!"
Salve o arquivo (Ctrl+O, Enter, então Ctrl+X) e torne-o executável:
chmod +x deploy-update.sh
Agora, vamos simular a atualização de nossos containers web:
./deploy-update.sh web
Você deve ver uma saída semelhante 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!
Esses exemplos práticos demonstram como a filtragem de containers pode ser integrada ao seu fluxo de trabalho Docker para tornar o gerenciamento de containers mais eficiente e automatizado.