Skip to content

Instantly share code, notes, and snippets.

@PauloDuarte43
Created August 2, 2023 19:25
Show Gist options
  • Save PauloDuarte43/51881a9d4ca85042ccd00523f780b2e5 to your computer and use it in GitHub Desktop.
Save PauloDuarte43/51881a9d4ca85042ccd00523f780b2e5 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Lista de IDs de todos os containers Docker
container_ids=$(docker ps -aq)
# Data limite em segundos (10 dias = 10 * 24 * 60 * 60 segundos)
limit=$((7 * 24 * 60 * 60))
# Lista de containers que não devem ser afetados pelo script
excecoes=("paulo_antunes-nginx-1" "paulo_antunes-webmock-1" " paulo_antunes-mongoadmin-qtm-suat-requests-1" "paulo_antunes-web-qtm-suat-requests-1" "paulo_antunes-web-trader-request-1" "cloudbeaver-desenv")
# Loop para verificar cada container e parar/apagar se necessário
for id in $container_ids; do
# Verificar se o nome do container está na lista de exceções
nome=$(docker inspect -f '{{ .Name }}' $id | sed 's/^\///') # Remove a barra inicial do nome do container
if [[ " ${excecoes[@]} " =~ " ${nome} " ]]; then
echo "Container $nome está na lista de exceções. Ignorando."
else
# Verificar o status do container
status=$(docker inspect -f '{{ .State.Status }}' $id)
if [ "$status" != "running" ]; then
echo "Deletando container $id (Status: $status)"
docker rm $id
else
# Obter a data de criação do container em segundos desde o Epoch
created=$(docker inspect -f '{{ .Created }}' $id)
created_seconds=$(date -d "$created" +%s)
# Obter a data atual em segundos desde o Epoch
now_seconds=$(date +%s)
# Calcular o tempo em segundos que o container está rodando
running_time=$((now_seconds - created_seconds))
if [ $running_time -gt $limit ]; then
echo "Parando e deletando container $id (Tempo de execução: $(($running_time / 60 / 60 / 24)) dias)"
docker stop $id
docker rm $id
fi
fi
fi
done
echo "Executando image prune"
echo "y" | docker image prune -a
echo "Executando container prune"
echo "y" | docker container prune
echo "Executando network prune"
echo "y" | docker network prune
#echo "Executando volume prune"
# docker volume rm $(docker volume ls -q)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment