Condividi tramite


Risolvere i problemi di autenticazione di Registro Azure Container

Registro Azure Container (Registro Azure Container) è un servizio del Registro di sistema privato. Per eseguire operazioni come push o pull (ad eccezione dell'operazione pull anonima), è prima necessario eseguire l'autenticazione nel Registro Azure Container.

Questo articolo illustra come risolvere i problemi di autenticazione di Registro Azure Container e offre soluzioni agli errori più comuni che si verificano quando si estraggono immagini da un registro contenitori.

Procedure iniziali per la risoluzione dei problemi

  1. Identificare l'opzione di autenticazione in uso. Dopo averne scelto uno, riprodurre il problema di autenticazione per ottenere l'errore.

  2. Iniziare a risolvere i problemi controllando l'integrità del registro Azure Container.

    Per controllare l'integrità del registro contenitori, eseguire il comando seguente:

    az acr check-health --name <acr-name> --ignore-errors --yes
    

    Se viene rilevato un problema, l'output del comando fornisce un codice di errore e una descrizione. Per altre informazioni sul codice di errore e sulle possibili soluzioni, vedere le informazioni di riferimento sull'errore di controllo integrità.

    Note

    Se vengono visualizzati errori correlati a Helm o Notary, non significa che si sia verificato un problema che interessa il registro contenitori o il dispositivo. Indica solo che Helm o Notary non è installato o che l'interfaccia della riga di comando di Azure non è compatibile con la versione attualmente installata di Helm o Notary.

Errore 1: "DOCKER_COMMAND_ERROR Verificare se il client Docker è installato e in esecuzione"

Ecco un esempio dei dettagli dell'errore:

You may want to use 'az acr login -n <acr-name> --expose-token' to get an access token, which does not require Docker to be installed.
<date and time> An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.

Soluzione 1: Assicurarsi che Docker sia installato

Il az acr login comando chiama il docker login comando e usa il token di accesso Microsoft Entra per eseguire l'autenticazione nel Registro Azure Container. Richiede l'installazione del client Docker e del daemon Docker nel computer in cui si esegue il comando. Per installare Docker, vedere Installare il motore Docker.

Soluzione 2: usare il comando "az acr login" con il parametro "--expose-token"

Quando il daemon Docker non viene eseguito nell'ambiente, se è necessario eseguire l'autenticazione con Registro Azure Container, usare il comando az acr login con il parametro --expose-token. Questo comando è utile quando è necessario eseguire script che non richiedono il daemon Docker, ma solo l'interfaccia della riga di comando di Docker, ad esempio quando si usa Azure Cloud Shell.

Errore 2: "Questo comando richiede l'esecuzione del daemon Docker, che non è supportato in Azure Cloud Shell"

Ecco un esempio dei dettagli dell'errore:

This command requires running the docker daemon, which is not supported in Azure Cloud Shell. You may want to use 'az acr login -n <acr-name> --expose-token' to get an access token, which does not require Docker to be installed.

Soluzione 1: Eseguire il comando "az acr login -n <acr-name>" in un altro ambiente

Il az acr login -n <acr-name> comando richiede l'esecuzione del client Docker e del daemon Docker. Azure Cloud Shell fornisce solo il client Docker. Per risolvere questo errore, eseguire il az acr login -n <acr-name> comando in un ambiente in cui è installato il daemon Docker.

Soluzione 2: usare il comando "az acr login" con il parametro "--expose-token"

Il az acr login -n <acr-name> comando richiede l'esecuzione del client Docker e del daemon Docker. Azure Cloud Shell fornisce solo il client Docker. Tuttavia, il az acr login comando con il --expose-token parametro funziona per gli ambienti senza il daemon Docker, ad esempio Azure Cloud Shell.

Errore 3: "Non autorizzato: autenticazione richiesta"

Ecco un esempio dei dettagli dell'errore:

Error response from daemon: Get "https://<acr-name>.azurecr.io/v2/": unauthorized: {"errors":[{"code":"UNAUTHORIZED","message":"authentication required, visit https://aka.ms/acr/authorization for more information."}]}

L'errore indica che l'autenticazione non è riuscita durante l'accesso al Registro Azure Container. Questo errore può verificarsi quando si esegue il az acr login comando o docker login con un nome utente e/o una password non corretti o le credenziali scadute (quando si usa un'entità servizio, un token con una mappa dell'ambito o un utente amministratore).

Soluzione: usare il nome utente e la password corretti/validi

  • Se si usa un utente amministratore per l'autenticazione, controllare le credenziali nel pannello Chiavi di accesso e se sono quelle usate nel docker login comando o az acr login .

    Screenshot che mostra il pannello 'Chiavi di accesso' del Registro Azure Container.

    Note

    Password usata in precedenza potrebbe essere stata rigenerata.

  • Se si usa un token associato a una mappa di ambito, controllare le credenziali usate. Dopo aver generato una password per il token, è necessario recuperarla e archiviare le credenziali in modo sicuro perché la password non verrà più visualizzata dopo aver chiuso la schermata. Vedere il messaggio nello screenshot seguente:

    Screenshot che mostra il messaggio

    Se non si è certi della password usata, è consigliabile rigenerarla.

  • Se si usa un token associato a una mappa dell'ambito, è possibile impostare una data di scadenza per la password. Per visualizzare la data di scadenza, è possibile eseguire i comandi dell'interfaccia della riga di comando di Azure descritti in Mostra dettagli token oppure aprire il token nel portale di Azure e controllare la data di scadenza in base allo screenshot seguente:

    Screenshot che mostra la colonna

  • Se si usa un'entità servizio, assicurarsi che disponga delle autorizzazioni specifiche per l'autenticazione con il Registro Azure Container. Per trovare le autorizzazioni specifiche e i ruoli predefiniti disponibili, vedere Registro Azure Container ruoli e autorizzazioni.

  • Se si usa un'entità servizio, controllare le credenziali usate. Dopo aver generato un segreto, è necessario recuperarlo e archiviare le credenziali in modo sicuro perché la password non verrà più visualizzata dopo aver chiuso la schermata. Vedere il messaggio nello screenshot seguente:

    Screenshot che mostra il messaggio

    Se non si è certi del valore del segreto usato, è consigliabile creare un nuovo segreto.

  • Se si usa un'entità servizio, assicurarsi che il segreto non sia scaduto.

    È possibile controllare la validità del segreto eseguendo il comando az ad app credential list :

    az ad app credential list --id "$SP_ID" --query "[].endDateTime" -o tsv
    

    In alternativa, è possibile controllare la validità del segreto verificando la colonna Scadenza nella portale di Azure:

    Screenshot che mostra la colonna 'Expires' del Registro Azure Container.

    Se il segreto è scaduto, è possibile creare un nuovo segreto.

Errore 4: "Impossibile ottenere le credenziali utente amministratore"

Ecco un esempio dei dettagli dell'errore:

Unable to get AAD authorization tokens with message: <date> <time> An error occurred: CONNECTIVITY_REFRESH_TOKEN_ERROR
Access to registry '<acr-name>.azurecr.io' was denied. Response code: 401. Please try running 'az login' again to refresh permissions.
Unable to get admin user credentials with message: The resource with name '<acr-name>' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription '<subscription-name> (<subscription-id>)'.

Soluzione: assicurarsi che l'identità usata disponga delle autorizzazioni specifiche

Assicurarsi che l'identità (ad esempio un utente o un'identità gestita) usata per l'autenticazione disponga delle autorizzazioni specifiche. Per trovare le autorizzazioni specifiche e i ruoli predefiniti disponibili, vedere Registro Azure Container ruoli e autorizzazioni.

Errore 5: "Client con indirizzo> IP <non consentito"

Ecco un esempio dei dettagli dell'errore:

Unable to get AAD authorization tokens with message: <date> <time> An error occurred: CONNECTIVITY_REFRESH_TOKEN_ERROR
Access to registry '<acr-name>.azurecr.io' was denied. Response code: 403. Please try running 'az login' again to refresh permissions.
Error response from daemon: Get "https://<acr-name>.azurecr.io/v2/": denied: {"errors":[{"code":"DENIED","message":"client with IP \u0027<ip-address>\u0027 is not allowed access. Refer https://aka.ms/acr/firewall to grant access."}]}

Soluzione: assicurarsi che il dispositivo che si sta tentando di autenticare abbia connettività con il Registro Azure Container

Registro Azure Container dispone di un firewall predefinito, che è un meccanismo per limitare l'accesso pubblico. Può consentire l'accesso completo, consentire l'accesso solo a reti specifiche o disabilitare completamente l'accesso pubblico. Tuttavia, è necessaria una connettività appropriata per l'autenticazione corretta. Verificare che l'indirizzo IP sia autorizzato ad accedere e accedere al Registro di sistema. Per altre informazioni sulla configurazione dell'accesso pubblico, vedere Configurare le regole di rete IP pubbliche.

In alternativa, è possibile prendere in considerazione l'uso di collegamento privato di Azure per connettersi privatamente al Registro Azure Container.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.