Azure Container Registry (ACR) è un servizio di Azure che consente di archiviare, gestire e distribuire immagini di container Docker in modo sicuro e affidabile. Questo servizio fornisce un registro privato per la gestione delle immagini dei container, in modo che le organizzazioni possano creare, archiviare e distribuire le proprie immagini Docker in modo rapido e scalabile. È particolarmente utile per le organizzazioni che lavorano con una grande quantità di container, in quanto semplifica la distribuzione e la gestione degli stessi.
Tuttavia, la gestione delle immagini di container può richiedere una grande quantità di spazio di archiviazione. Per limitare lo spazio occupato dai repository, ACR fornisce funzionalità di pulizia dell'immagine e gestione della conservazione automatica attraverso il piano premium come abbiamo già visto nello script https://www.cloudnativeitalia.com/script/230/Eliminare-Spazio-Inutilizzato-Azure-Container-Registry.aspx.
In questo script proponiamo un'alternativa basata su bash e Azure CLI, particolarmente indicata per essere lanciata automaticamente nelle pipeline di build e di rilascio, attraverso GitHub o Azure DevOps, senza la necessità di avere un piano speciale di ACR. L'idea è quella di sfogliare tutti i repository di un registro e di eliminare tutti i tag più vecchi di 30 giorni.
# imposta il nome del registro
ACR_NAME=industria4
# imposta la data limite (30 giorni)
DATE_THRESHOLD=$(date -u -d "-30 days" +%Y-%m-%dT%H:%M:%SZ)
# recupera la lista dei repository
REPO_LIST=$(az acr repository list --name $ACR_NAME --output tsv)
# cicla su tutti i repository
for REPO_NAME in $REPO_LIST; do
# recupera la lista dei tag
TAG_LIST=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO_NAME --query "[?timestamp < '$DATE_THRESHOLD'].tags" --orderby time_desc --output tsv)
# cicla su tutti i tag
for TAG in $TAG_LIST; do
# escludo il tag che contiene latest
if [[ $TAG != *"latest"* ]]; then
# cancello il tag
az acr repository delete --name $ACR_NAME --image $REPO_NAME:$TAG --yes
echo "Deleted tag $TAG for repository $REPO_NAME"
else
echo "Skipped tag $TAG for repository $REPO_NAME"
fi
done
doneLo script è commentato in ogni sua parte e salta automaticamente il tag latest in modo da lasciare sempre il tag principale.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzo del persistent state di Blazor nel prerendering
Bloccare il traffico di rete in uscita dal runner di GitHub
Semplificare i deployment con le label in Azure Container App
Introduzione a GitHub Copilot CLI
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Integrare OpenTelemetry direttamente in Azure Monitor
Supporto semplificato per le left join in Entity Framework 10
Referenziare un package NuGet in una file based app .NET
Gestire trasferimenti cloud con Azure Storage Mover
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Stop Building Chatbots. Build a team
Abilitare .NET 10 su Azure App Service e Azure Functions
I più letti di oggi
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Esaminare documenti con namespace con LINQ e XDocument
- Accedere a dati esposti con WebService con Silverlight 1.0
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit


