Update Scripts/container-size.sh

Remove layers except merged, add docu.
This commit is contained in:
dataprolet 2025-03-21 13:33:43 +01:00
parent 0dcc088b7f
commit 379899af93

View File

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