From 0dcc088b7fd71595cbf16f30bef984d45d99c722 Mon Sep 17 00:00:00 2001 From: dataprolet Date: Thu, 20 Mar 2025 15:50:28 +0100 Subject: [PATCH] Add Scripts/container-size.sh --- Scripts/container-size.sh | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Scripts/container-size.sh diff --git a/Scripts/container-size.sh b/Scripts/container-size.sh new file mode 100644 index 0000000..59fb6db --- /dev/null +++ b/Scripts/container-size.sh @@ -0,0 +1,47 @@ +#!/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 + +IFS=$'\n' + +echo "Searching for large directories.." +overlay=($(du -sh /var/lib/docker/overlay2/* | sort -hr | head -n 10)) + +clear +echo "Containers that use a lot of space:" + +for layer in "${overlay[@]}"; do + size=$(echo $layer | awk '{print $1}') + 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])"' \ + | 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 + + if [[ -n $container_name ]]; then + echo "$size $container_name" + fi +done \ No newline at end of file