Skip to content

Instantly share code, notes, and snippets.

@mdraevich
Created March 18, 2025 19:33
Show Gist options
  • Select an option

  • Save mdraevich/3ce93d3f23c3269b916af2b6edd58794 to your computer and use it in GitHub Desktop.

Select an option

Save mdraevich/3ce93d3f23c3269b916af2b6edd58794 to your computer and use it in GitHub Desktop.
Clear unused overlay2 layers
#!/bin/bash
# Set the overlay2 directory path
OVERLAY2_DIR="/var/lib/docker/overlay2"
# Get all folders in overlay2
overlay2_folders=$(ls -1 $OVERLAY2_DIR)
# List all Docker objects (images, containers, volumes, etc.)
docker_objects=$(docker ps -aq) # All containers, running or stopped
docker_objects+=" $(docker images -q)" # All images
# Check each Docker object
for hash in $overlay2_folders; do
is_hash_used=""
for object in $docker_objects; do
docker inspect $object | grep -q "$hash" && echo "[OK] $hash" && is_hash_used=1 && break
done
test -z "$is_hash_used" && echo "[TO_DELETE] $hash" && mv $OVERLAY2_DIR/$hash ~/to_delete
done
# for object in $docker_objects; do
# # Get all hashes used by the object
# object_inspect=$(docker inspect $object)
# # Merge the hashes into the referenced list
# for hash in $object_hashes; do
# if [[ ! " ${referenced_hashes[@]} " =~ " $hash " ]]; then
# referenced_hashes+=("$hash")
# fi
# done
# done
# Now compare and remove unreferenced folders
# for folder in $overlay2_folders; do
# if [[ ! " ${referenced_hashes[@]} " =~ " $folder " ]]; then
# echo "Deleting unused overlay2 folder: $folder"
# rm -rf "${OVERLAY2_DIR}/${folder}"
# fi
# done
# echo "Cleanup complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment