Skip to content

Instantly share code, notes, and snippets.

@Stovoy
Last active April 29, 2017 03:26
Show Gist options
  • Save Stovoy/48c94319b576b6d9ea1e1d7a407a7547 to your computer and use it in GitHub Desktop.
Save Stovoy/48c94319b576b6d9ea1e1d7a407a7547 to your computer and use it in GitHub Desktop.
Calculate a docker image's total size.
function docker_image_size() {
local image=$1
local sum=0
local value
for line in $(docker history $image | tail -n +2 | awk '{print $(NF-1) "-" $NF}'); do
if [[ "$(echo $line | awk -F'-' '{print $2}')" == "B" ]]; then
value=$(echo $line | awk -F'-' '{print $1}')
elif [[ "$(echo $line | awk -F'-' '{print $2}')" == "kB" ]]; then
kb=$(echo $line | awk -F'-' '{print $1}')
value=$(echo "$kb * 1024" | bc -l)
elif [[ "$(echo $line | awk -F'-' '{print $2}')" == "MB" ]]; then
mb=$(echo $line | awk -F'-' '{print $1}')
value=$(echo "$mb * 1024 * 1024" | bc -l)
elif [[ "$(echo $line | awk -F'-' '{print $2}')" == "GB" ]]; then
gc=$(echo $line | awk -F'-' '{print $1}')
value=$(echo "$gb * 1024 * 1024 * 1024" | bc -l)
fi
sum=$(echo "$sum + $value" | bc -l)
done
echo "Total bytes: $sum"
echo "Total kilobytes: $(echo $sum / 1024 | bc -l)"
echo "Total megabytes: $(echo $sum / 1024 / 1024 | bc -l)"
echo "Total gigabytes: $(echo $sum / 1024 / 1024 / 1024 | bc -l)"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment