Improve docker-clean to avoid "in use" errors

Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
Knut Ahlers 2018-02-15 22:53:35 +01:00
parent 2ad65f4512
commit 0c1efb0e64
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E

View file

@ -11,10 +11,13 @@ step "Removing containers created / exited >= ~1h ago..."
CONTAINERS=$(docker ps -a | awk '/(hours?|days?|weeks?|months?) ago\s+(Created|Exited)/{ print $1 }' | xargs) CONTAINERS=$(docker ps -a | awk '/(hours?|days?|weeks?|months?) ago\s+(Created|Exited)/{ print $1 }' | xargs)
[ -n "${CONTAINERS}" ] && docker rm ${CONTAINERS} [ -n "${CONTAINERS}" ] && docker rm ${CONTAINERS}
step "Removing images missing repository or tag..." step "Untagging all images not used by containers..."
IMGS=$(docker images | awk '/<none>.*(hours?|days?|weeks?|months?) ago/{ print $3 }' | xargs) PS_OUTPUT=$(docker ps -a)
[ -n "${IMGS}" ] && docker rmi ${IMGS} for img in $(docker images | awk '/^[a-z].*(hours?|days?|weeks?|months?) ago/{ print $1":"$2 }' | grep -v '<none>' | sort | uniq); do
if ! ( echo "${PS_OUTPUT}" | grep -q "\s${img}\s" ); then
docker rmi --no-prune "${img}"
fi
done
step "Removing images with tags not being used (used images will throw errors, that's normal)..." step "Removing dangling images..."
IMGS=$(docker images | awk '/(hours?|days?|weeks?|months?) ago/{ print $1":"$2 }' | xargs) docker image prune -f
[ -n "${IMGS}" ] && docker rmi ${IMGS} || true