Created
December 12, 2019 08:27
-
-
Save nanawel/2510138b92e0ebd7ae62d5742045154e to your computer and use it in GitHub Desktop.
Delete all untagged images and - optionally - images from specified {repository} if older than {max-age}
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Usage: | |
# $ cleanup_docker.sh [repository max-age] | |
echo "Deleting untagged images...." | |
UNTAGGED_IMAGES=$(docker images | grep "^<none>" | awk '{print $3}') | |
if [ ! -z "$UNTAGGED_IMAGES" ]; then | |
docker rmi $UNTAGGED_IMAGES | |
else | |
echo "No untagged images found." | |
fi | |
if [ ! -z "$1" ]; then | |
IMAGE_NAME="$1" | |
if [ ! -z "$2" ]; then | |
TS_LIMIT=$(date '+%s' --date="$2") | |
if [[ $? -gt 0 ]]; then | |
exit 1 | |
fi | |
echo "Deleting images matching '$IMAGE_NAME' older than $(date -Iminutes -d "@$TS_LIMIT")" | |
MATCHING_IMAGES="$(docker images --format '{{.Repository}},{{.ID}}' | grep "^$IMAGE_NAME")" | |
IFS=$'\n' | |
for row in $MATCHING_IMAGES; do | |
IMAGE_ID="$(echo "$row" | awk -F',' '{print $2}')" | |
IMAGE_DATE_UTC="$(docker inspect -f "{{.Created}}" $IMAGE_ID)" | |
IMAGE_TS=$(date '+%s' --date="$IMAGE_DATE_UTC") | |
if [[ "$IMAGE_TS" -lt "$TS_LIMIT" ]]; then | |
echo "* Deleting $IMAGE_ID ($IMAGE_DATE_UTC)" | |
docker rmi -f $IMAGE_ID | |
fi | |
done | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment