#!/bin/bash #//// GREG POUR LE GARAGE NUMERIQUE \\\\# # Ce script fonctionne avec le docker-compose.yml du projet https://gitlab.com/greglebreton/docker.git -> branche docker-registry # Ce script maintient un registre privée accueillant des sauvegardes de conteneurs quotidiennement de manière automatisée. # Le delta est exprimé en jour et est effectué par comparaison entre la date du jour et la date d'enregistrement de l'image. date=$(date +"%Y-%m-%d") # A RENSEIGNER ## chemin vers le dossier docker cloné sans le dernier / registryPath="" ## exemple monRegistreDocker.monDomaine.com dockerRegistryAdress="" ## nombre de jours de sauvegarde à conserver par rapport à la date du jour (à ajuster si les sauvegardes ne sont pas quotidiennes) max="" ## registres à ignorer exceptions=( "container1" "container2" ) ################################################################################################### echo "docker clean start..." ## DOCKER LIST IMG REGISTRY registry=$(ls $registryPath/registry-data/docker/registry/v2/repositories/) ## DOCKER LIST TAGS FOR EACH REPO for repo in $registry do for ex in ${exceptions[@]} do if [ $repo == $ex ] then break else tags=$(ls $registryPath/registry-data/docker/registry/v2/repositories/$repo/_manifests/tags/) for tag in $tags do datebackup=$(stat -c '%w' $registryPath/registry-data/docker/registry/v2/repositories/$repo/_manifests/tags/$tag) gooddatebackup="${datebackup:0:10}" echo $gooddatebackup if [ ${tag:0:2} == "01" ] then break else let delta=($(date +%s -d $date)-$(date +%s -d $gooddatebackup))/86400 if [ $delta -gt $max ] then echo "$dockerRegistryAdress/$repo:$tag deleted!" regctl tag rm $dockerRegistryAdress/$repo:$tag fi fi done fi done done echo "registre nettoyé"