Quando necessitiamo di un registry per Docker ci sono molti servizi disponibili, privati e pubblici, a pagamento o gratuiti. Azure Container Registry (ACR) è il servizio della piattaforma Microsoft Azure che offre la possibilità di storicizzare le nostre immagini in maniera privata, affidabile e geo distribuita. Offre inoltre funzionalità aggiuntive, come la possibilità di eseguire task per la creazione delle immagini e il supporto a Helm.
Per poter effettuare push e pull di immagini, però, ci si avvale degli stessi strumenti disponibili per gli altri registri. Nel caso di Docker, attraverso le istruzioni docker push e docker pull possiamo inviare o scaricare un'immagine, ma prima è fondamentale aver effettuato l'accesso. L'istruzione docker login permette di farlo specificando lo username e la password. Nel caso di ACR è disponibile una chiave d'accesso amministrativa, ma normalmente è disabilitata perché non permette di distinguere i permessi e chi ha effettuato l'operazione.
Il modo più semplice per effettuare l'accesso consiste quindi nell'utilizzare Azure CLI. Attraverso due semplice comandi possiamo prima di tutto entrare con le nostre credenziali Microsoft e successivamente ottenere la sessione di autenticazione per Docker.
az login az acr login --name ricciolo
Nell'esempio precedente vogliamo accedere all'istanza di nome ricciolo. Questa procedura richiede che l'utente utilizzato sia uno user o un guest configurato in Azure Active Directory (AAD) e abbia i permessi di accesso all'istanza da noi desiderata.
In alternativa possiamo utilizzare un service principal, cioè creare un applicativo che permetta l'accesso senza procedure web, ideale quindi per esecuzioni batch. Per farlo dobbiamo accedere nella sezione ADD e successivamente in App Registrations. Tramite il pulsante New registration diamo un nome al nostro principal.

Creato il principal accediamo alla sezione Certificates & secrets e generiamo un nuovo secret.

Annotiamolo perché questo rappresenta la password del principal. Nell'overview dell'app prendiamo inoltre nota del Application (client) ID, il quale rappresenta lo username.
L'ultimo step richiede l'assegnazione dei permessi, fondamentale nel caso dei principal, ma anche nel caso in cui utilizzassimo un utente AAD che non è amministratore dell'intera sottoscrizione. Nella sezione Access control (IAM) della nostra istanza ACR aggiungiamo quindi una nuova assegnazione per l'applicativo appena creato, indicando uno o più ruoli specifici, come per esempio, AcrPull e AcrPush.

Creato l'applicativo e dati i permessi, possiamo usare direttamente Docker per effettuare il login mediante client id e secret.
docker login ricciolo.azurecr.io --username 5100bea1-df8c-43d5-b4d5-05302fba74b4 --password fdgfdsgdsgdsgsdgf
In alternativa alla password è possibile anche usare i certificati dedicati alle applicazioni rendendo ancora più sicuro l'accesso. In generale è buona norma, come già detto, non usare l'utenza amministrativa predefinita, ma procedere con una delle due metodologie indicate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Introduzione alle Container Queries
Managed deployment strategy in Azure DevOps
Gestione CSS in Blazor con .NET 9
Usare il colore CSS per migliorare lo stile della pagina
Gestione degli stili CSS con le regole @layer
Introduzione ai web component HTML
Configurare e gestire sidecar container in Azure App Service
Recuperare App Service cancellati su Azure
Anonimizzare i dati sensibili nei log di Azure Front Door
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Ottenere un token di accesso per una GitHub App
I più letti di oggi
- Formati per l'impostazione del colore in CSS3
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2
- Impostare un riferimento ad una entity collegata tramite foreign key
- la Call For Papert per #netconfit è aperta!invia la tua sessione da https://aspit.co/netconfit-20 puoi parlare di #net5, #aspnet5, #efcore5, #CSharp9 e tutto quello che ruota intorno a #dotnet.