#!/bin/bash echo "List of all volumes:" echo #Loop over all the data volumes for docker_volume_id in $(docker volume ls -q) do echo "(Un)named volume: ${docker_volume_id}" #Obtain the size of the data volume by starting a docker container #that uses this data volume and determines the size of this data volume docker_volume_size=$(docker run --rm -t -v ${docker_volume_id}:/volume_data alpine sh -c "du -hs /volume_data | cut -f1" ) echo " Size: ${docker_volume_size}" #Determine the number of stopped and running containers that #have a connection to this data volume num_related_containers=$(docker ps -a --filter=volume=${docker_volume_id} -q | wc -l) #If the number is non-zero, we show the information about the container and the image #and otherwise we show the message that are no connected containers if (( $num_related_containers > 0 )) then echo " Connected containers:" docker ps -a --filter=volume=${docker_volume_id} --format "{{.Names}} [{{.Image}}] ({{.Status}})" | while read containerDetails do echo " ${containerDetails}" done else echo " No connected containers" fi echo done