From 379899af93eb8b8c5ba5de22b1b9f517b0f49fcf Mon Sep 17 00:00:00 2001 From: dataprolet Date: Fri, 21 Mar 2025 13:33:43 +0100 Subject: [PATCH] Update Scripts/container-size.sh Remove layers except merged, add docu. --- Scripts/container-size.sh | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/Scripts/container-size.sh b/Scripts/container-size.sh index 59fb6db..041b7a7 100644 --- a/Scripts/container-size.sh +++ b/Scripts/container-size.sh @@ -1,47 +1,36 @@ #!/bin/bash -clear - # 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 10)) +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') - # Check MergeDir - container_name=$( docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.MergedDir]) | .[] | "\(.[0])\t\(.[1])"' \ + # 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') - # Check UpperDir - if [[ -z $container_name ]]; then - container_name=$( docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.UpperDir]) | .[] | "\(.[0])\t\(.[1])"' \ - | grep -w $layer_id | awk '{print $1}' | sed 's|/||g') - fi - - # Check LowerDir - if [[ -z $container_name ]]; then - container_name=$( docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.LowerDir]) | .[] | "\(.[0])\t\(.[1])"' \ - | grep -w $layer_id | awk '{print $1}' | sed 's|/||g') - fi - - # Check WorkDir - if [[ -z $container_name ]]; then - container_name=$( docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.WorkDir]) | .[] | "\(.[0])\t\(.[1])"' \ - | grep -w $layer_id | awk '{print $1}' | sed 's|/||g') - fi - + # Filter out layers without container if [[ -n $container_name ]]; then - echo "$size $container_name" + echo "$size $container_name ($layer_id)" fi done \ No newline at end of file