Freigeben über


Bilder können nicht aus der Azure-Containerregistrierung in Azure Web App abgerufen werden.

Dieser Artikel enthält Anleitungen zur Problembehandlung der am häufigsten auftretenden Fehler, wenn Sie Bilder aus einer Azure-Containerregistrierung in Azure Web App abrufen.

Symptome und erste Problembehandlung

Es wird empfohlen, die Problembehandlung zu starten, indem Sie den Status der Containerregistrierung überprüfen.

Führen Sie den folgenden Befehl aus, um den Status der Containerregistrierung zu überprüfen:

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

Wenn ein Problem erkannt wird, enthalten die Ergebnisse einen Fehlercode und eine Beschreibung. Weitere Informationen zu diesen Fehlern und möglichen Lösungen finden Sie in der Fehlerreferenz zur Integritätsprüfung.

Notiz

Wenn Sie Helm-bezogene oder notarbezogene Fehler erhalten, bedeutet dies nicht, dass Ihre Containerregistrierung oder AKS nicht funktioniert oder ein Problem hat. Es gibt nur die Probleme an, z. B. dass Helm oder Notar nicht installiert ist oder dass Azure CLI nicht mit der aktuell installierten Version von Helm oder Notar kompatibel ist.

Identifizieren Sie als Nächstes die Pull-bezogene Fehlermeldung, die für die Problembehandlung unerlässlich ist:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie in Ihrer Web-App das Bereitstellungscenterprotokoll> aus. Wählen Sie den Commit aus, um die Protokolldetails anzuzeigen. Sie können die Protokolle für den Bild-Pullprozess auch in Echtzeit anzeigen, indem Sie den Protokolldatenstrom im Abschnitt "Überwachung" überprüfen.

In den folgenden Abschnitten können Sie die häufigsten Fehler beheben, die in den Web App-Protokollen angezeigt werden.

Fehler 1: Nicht autorisiert

Head \" https://<acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": unauthorized

Lösung für benutzerbasierte Administratorauthentifizierung

Der Fehler "Nicht autorisiert" kann durch falsche Administratoranmeldeinformationen verursacht werden. Dazu gehören der Anmeldeserver, der Benutzername oder das Kennwort, den Sie in den Web-App-Umgebungsvariablen konfiguriert haben.

Gehen Sie folgendermaßen vor, um das Problem zu beheben:

  1. Navigieren Sie im Azure-Portal zu Ihrem Registrierungscontainer. Wählen Sie im Abschnitt "Einstellungen" die Zugriffstasten aus. Überprüfen Sie die Einstellungen für Administratorbenutzeranmeldeinformationen des Anmeldeservers, des Benutzernamens und des Kennworts.
  2. Navigieren zu Ihrer Web-App. Wählen Sie im Abschnitt "Einstellungen" die Option "Umgebungsvariablen" aus.
  3. Stellen Sie sicher, dass die drei Variablen, die für die Containerregistrierung konfiguriert sind (Anmeldeserver, Benutzername, Kennwort), den Einstellungen für Administratorbenutzeranmeldeinformationen im Registrierungscontainer entsprechen.

Lösung für die verwaltete identitätsbasierte Authentifizierung

Wenn Sie die verwaltete identitätsbasierte Authentifizierung von Azure Web App verwenden, muss die Microsoft.ContainerRegistry/registries/pull/read Berechtigung der verwalteten Identität zugewiesen werden, um die Pullaktion auszuführen.

Die integrierten Azure-Rollen, die die Microsoft.ContainerRegistry/registries/pull/read Berechtigung enthalten, sind die folgenden:

  • AcrPull
  • AcrPush
  • ReaderContributor
  • Besitzer

Weitere Informationen finden Sie unter Azure Container Registry: Rollen und Berechtigungen.

Wenn Sie einen Pullvorgang aus der Containerregistrierung initiieren, wird die AcrPull-Rolle automatisch der verwalteten Identität von Azure Web App zugewiesen. Sie müssen keine Berechtigungen manuell hinzufügen. Sie müssen jedoch sicherstellen, dass die Erstellung von Rollenzuweisungen nicht durch eine Azure-Richtlinie blockiert wird. Überprüfen Sie außerdem, ob die Rollenzuweisung nicht gelöscht wurde.

Fehler 2: Das nach <Tag> markierte Manifest wurde nicht gefunden.

DockerApiException : Docker API responded with status code=NotFound, response={"message":"manifest for <acr-name>.azurecr.io/<repository>:<tag> not found: manifest unknown: manifest tagged by \"<tag>\" is not found"}

Lösung: Stellen Sie sicher, dass das Tag vorhanden ist

Die Fehlermeldung gibt an, dass das Tag, das dem Bild zugeordnet ist, das Sie ziehen möchten, nicht gefunden wurde. Stellen Sie sicher, dass das Tag im zugehörigen Repository und in der zugehörigen Registrierung vorhanden ist.

Führen Sie den folgenden Befehl aus, um die Tags innerhalb des zugeordneten Repositorys und der Registrierung mithilfe der Azure CLI zu finden:

az acr repository show-tags -n <ContainerRegistryName> --repository <RepositoryName>

Um die Azure-Portal zu verwenden, um die Tags zu finden, die sich im zugehörigen Repository und in der Registrierung befinden, führen Sie die folgenden Schritte aus:

Navigieren Sie zu Ihrem Registrierungscontainer. Wählen Sie unter "Dienste" Repositorys aus, öffnen Sie das zugeordnete Repository, und überprüfen Sie dann die Liste der Tags.

Notiz

Der Befehl "az acr repository show-tags" oder das Überprüfen der Repositorys aus dem Azure-Portal funktioniert nur, wenn die Containerregistrierungsnetzwerkregeln dies zulassen.

Fehler 3: Client mit IP-Adresse ist nicht zulässiger Zugriff

DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Head \"https:// <acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": denied: client with IP '<web-app-outbound-ip>' is not allowed access. Refer https://aka.ms/acr/firewall to grant access."}

Lösung 1: Stellen Sie sicher, dass die integrierte Containerregistrierung die IP-Adresse Ihres Geräts zulässt.

Standardmäßig akzeptiert eine Containerregistrierung Verbindungen über das Internet aus allen Netzwerken. Die Containerregistrierung verfügt über eine integrierte Firewall, die den Zugriff auf bestimmte IP-Adressen oder CIDRs einschränken oder den Zugriff auf öffentliche Netzwerke vollständig deaktivieren kann.

Dieses Problem kann auftreten, wenn die IP-Adressen Ihrer Web-App durch die integrierte Firewall der Containerregistrierung blockiert werden.

Um dieses Problem zu beheben, stellen Sie sicher, dass die integrierte Firewall die ausgehenden IP-Adressen der Web-App zulässt, die das Bild abrufen muss.

Führen Sie die folgenden Schritte aus, um die ausgehenden IP-Adressen der Web-App zu finden:

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.
  2. Suchen Sie auf der Seite "Übersicht" nach ausgehender IP-Adresse, und wählen Sie dann "Weitere anzeigen" aus, um die vollständige Liste der ausgehenden IP-Adressen zu erhalten.

Informationen zur Verwendung der Azure CLI zum Suchen der ausgehenden IP-Adressen von Web-Apps finden Sie unter "Ermitteln ausgehender IP-Adressen" in Azure-App Dienst.

Lösung 2: Konfigurieren der Integration des virtuellen Netzwerks für die Web App

Wenn Sie den Zugriff auf das öffentliche Netzwerk vollständig deaktivieren oder nur ausgewählte Netzwerke in der Containerregistrierung zulassen müssen, ohne die IP-Adressen der Web-App manuell hinzuzufügen, besteht die alternative Option darin, das Image privat abzurufen. Um Bilder privat abzurufen, müssen Sie die Containerregistrierung mithilfe eines privaten Endpunkts konfigurieren und die Integration des virtuellen Netzwerks für die Web-App aktivieren.

Sie können die Integration virtueller Netzwerke auf der Web-App-Seite konfigurieren, indem Sie die folgenden Schritte ausführen:

  1. Navigieren Sie in der Azure-Portal zu Ihrer Web-App, und wählen Sie dann "Netzwerk" aus.

  2. Konfigurieren Sie unter "Konfiguration des ausgehenden Datenverkehrs" die Integration des virtuellen Netzwerks, wählen Sie "Virtuelle Netzwerkintegration hinzufügen" aus, und geben Sie dann das Abonnement, das virtuelle Netzwerk und das Subnetz an.

  3. Stellen Sie auf der Konfigurationsseite des virtuellen Netzwerks sicher, dass die Option "Containerimage-Pull " ausgewählt ist.

    Screenshot der Pulloption

Um das Image über das virtuelle Netzwerk abzurufen, müssen Sie pull image over VNet im Deployment Center der Web-App aktivieren. Wenn die Containerregistrierung den öffentlichen Zugriff deaktiviert oder auf bestimmte Netzwerke festgelegt hat, erhalten Sie möglicherweise die Meldung "Fehler beim Laden von ACR-Tags – fehlgeschlagen", wie im folgenden Beispiel gezeigt. Dieser Fehler wird in diesem Szenario erwartet. Wenn dies der Fall ist, stehen die Dropdownoptionen für Bild und Tag nicht zur Verfügung. Sie müssen das Bild und das Tag manuell eingeben.

Screenshot des Fehlers beim Laden der ACR-Tags-Fehlermeldung.

Nächste Schritte

Wenn dieses Problem durch diese Anleitung zur Problembehandlung nicht behoben wird, beachten Sie Folgendes:

Überprüfen Sie die Netzwerksicherheitsgruppen und Routentabellen, die Ihren Subnetzen zugeordnet sind. Wenn eine virtuelle Appliance, z. B. eine Firewall, den Datenverkehr zwischen Subnetzen steuert, überprüfen Sie die Firewall und ihre Zugriffsregeln.

Verwenden Sie den Kudu-Dienst für zusätzliche Problembehandlung. Sie können eine Verbindung mit dem Kudu-Dienst herstellen. Verwenden Sie z. B. Bash, um die DNS-Auflösung zu testen, indem Sie ausgeführt nslookup <acr-name>.azurecr.iowerden, oder überprüfen Sie die Konnektivität mithilfe von tcpping <acr-name>.azurecr.io.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.