← Retour
#!/bin/bash
# ===========================================
# Nettoie les ressources Docker non utilisées
# Usage: ./cleanup.sh [--force]
# ===========================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/config.sh"
source "$SCRIPT_DIR/../lib/colors.sh"
source "$SCRIPT_DIR/../lib/utils.sh"
FORCE=false
[ "$1" = "--force" ] && FORCE=true
print_header "Nettoyage Docker"
# Afficher l'espace avant nettoyage
log_info "Espace disque Docker actuel:"
docker system df
echo ""
# Containers arrêtés
STOPPED_CONTAINERS=$(docker ps -a -f status=exited -q | wc -l)
log_info "Containers arrêtés: $STOPPED_CONTAINERS"
# Images non utilisées
DANGLING_IMAGES=$(docker images -f dangling=true -q | wc -l)
log_info "Images orphelines: $DANGLING_IMAGES"
# Volumes non utilisés
UNUSED_VOLUMES=$(docker volume ls -f dangling=true -q | wc -l)
log_info "Volumes non utilisés: $UNUSED_VOLUMES"
echo ""
if [ "$FORCE" = false ]; then
if ! confirm "Procéder au nettoyage ?"; then
log_info "Annulé"
exit 0
fi
fi
# Nettoyage
log_step "Suppression des containers arrêtés..."
docker container prune -f >/dev/null 2>&1 || true
log_step "Suppression des images orphelines..."
docker image prune -f >/dev/null 2>&1 || true
log_step "Suppression des volumes non utilisés..."
docker volume prune -f >/dev/null 2>&1 || true
log_step "Suppression des networks non utilisés..."
docker network prune -f >/dev/null 2>&1 || true
echo ""
log_success "Nettoyage terminé!"
echo ""
# Afficher l'espace après nettoyage
log_info "Espace disque Docker après nettoyage:"
docker system df