#!/bin/bash # Optional: prune Docker docker volume prune -af 2>&1 > /dev/null docker image prune -af 2>&1 > /dev/null docker builder prune -af 2>&1 > /dev/null # Set field seperator to new line IFS=$'\n' # Get 25 largest directories in ./overlay2 clear echo "Searching for large directories.." overlay=($(du -sh /var/lib/docker/overlay2/* | sort -hr | head -n 25)) clear echo "Containers that use a lot of space:" # Iterate through lines for layer in "${overlay[@]}"; do # Extract size size=$(echo $layer | awk '{print $1}') # Extract layer ID layer_id=$(echo $layer | awk '{print $2}' | sed 's|/var/lib/docker/overlay2/||g') # Extract container name container_name=$(docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.MergedDir]) | .[] | "\(.[0])\t\(.[1])"' \ | grep -w $layer_id | awk '{print $1}' | sed 's|/||g') # Filter out layers without container if [[ -n $container_name ]]; then echo "$size $container_name ($layer_id)" fi done