Skip to content

Instantly share code, notes, and snippets.

@jonathan-kosgei
Last active July 15, 2017 07:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonathan-kosgei/a63e7cd5e7a94b9fbb52e66ace81b371 to your computer and use it in GitHub Desktop.
Save jonathan-kosgei/a63e7cd5e7a94b9fbb52e66ace81b371 to your computer and use it in GitHub Desktop.
Delete all images in order of dependency excluding selected base images for faster builds
#!/bin/bash
function list_include_item { local list="$1"; local item="$2"; if [[ $list =~ (^|[[:space:]])"$item"($|[[:space:]]) ]] ; then result=0; else result=1; fi; return $result;};
bases="alpine:latest nginx:1.11.3-alpine"
delete=
# append latest tag to each image
for item in $(docker images --format "{{.Repository}}:{{.Tag}}@{{.ID}}")
do
export IFS=' '
IFS='@'; arr=($item); unset IFS;
#export IFS=' '
`list_include_item "$bases" "${arr[0]}"` && check="yes" || check="no"
if [[ "$check" == "yes" ]];
then
echo "Removing ${arr[0]} from deletion list."
else
delete+="${arr[0]} "
fi
#echo Image: ${arr[0]}
#echo ID: ${arr[1]}
done
docker rmi $delete
docker rmi $(docker images -f "dangling=true" -q)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment