Skip to content

Instantly share code, notes, and snippets.

@gdelpierre
Created June 28, 2016 13:47
Show Gist options
  • Save gdelpierre/266d20a525d11e9e94b7b6d02b9f3b20 to your computer and use it in GitHub Desktop.
Save gdelpierre/266d20a525d11e9e94b7b6d02b9f3b20 to your computer and use it in GitHub Desktop.
Docker: Do some cleaning
#! /usr/bin/env bash
set -o errexit
_docker="$(which docker)"
rm_docker_exited_containers()
{
printf "Removing exited docker containers...\n"
_docker_exited=($($_docker ps -a -f status=exited -q))
[[ "${#_docker_exited[@]}" > 0 ]] &&
printf "${_docker_exited[*]}" | xargs -L1 "${_docker}" rm -v
printf "Done\n"
}
rm_docker_dangling_images()
{
printf "Removing dangling images...\n"
_docker_dangling_imgs=($($_docker images --no-trunc -q -f dangling=true))
[[ "${#_docker_dangling_imgs[@]}" > 0 ]] &&
printf "${_docker_dangling_imgs[*]}" | xargs -L1 "${_docker}" rmi
printf "Done\n"
}
rm_docker_unused_images()
{
printf "Removing unused docker images\n"
_docker_images=($($_docker images --digests | awk '(NR > 1) \
{ img_id=$1
if ( $2 != "<none>")
img_id=img_id":"$2
if ($3 != "<none>")
img_id=img_id"@"$3
print img_id
}
'))
_docker_containers=($($_docker ps -a | awk '( NR > 1 ) { print $2 }'))
for item in "${_docker_images[@]}"; do
[[ ! "${_docker_containers[@]}" =~ "${item}" ]] &&
remove+=("${item}")
done
[[ "${#remove[@]}" > 0 ]] &&
printf ${remove[*]} | xargs "${_docker}" rmi
printf "Done\n"
}
rm_docker_exited_containers &&
rm_docker_dangling_images &&
rm_docker_unused_images
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment