73 lines
1.4 KiB
Bash
Executable File
73 lines
1.4 KiB
Bash
Executable File
#!/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!)"
|