#!/bin/bash # Docker Cleanup Script # Safely removes unused containers, images, volumes, and networks set -e echo "=== Docker Cleanup ===" echo "$(date)" echo "" # Show current usage echo "[Current Docker Disk Usage]" docker system df echo "" # Ask for confirmation echo "This will remove:" echo " - Stopped containers" echo " - Unused networks" echo " - Dangling images" echo " - Build cache" echo "" read -p "Continue? (y/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Cleanup cancelled" exit 0 fi echo "" echo "[1/4] Removing stopped containers..." docker container prune -f echo "✅ Done" echo "" echo "[2/4] Removing unused networks..." docker network prune -f echo "✅ Done" echo "" echo "[3/4] Removing dangling images..." docker image prune -f echo "✅ Done" echo "" echo "[4/4] Removing build cache..." docker builder prune -f echo "✅ Done" echo "" # Ask about unused images echo "" echo "[Optional] Remove ALL unused images (not just dangling)?" echo "⚠️ This removes images not used by any container" read -p "Remove unused images? (y/N) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Removing all unused images..." docker image prune -a -f echo "✅ Done" fi echo "" echo "[New Docker Disk Usage]" docker system df echo "" echo "=== Cleanup Complete ===" echo "" echo "Tip: Run 'docker volume prune' to remove unused volumes (use with caution!)"