Udostępnij za pośrednictwem


Nie można ściągać obrazów z usługi Azure Container Registry do aplikacji internetowej platformy Azure

Ten artykuł zawiera wskazówki dotyczące rozwiązywania najczęstszych błędów, które mogą wystąpić podczas ściągania obrazów z rejestru kontenerów platformy Azure do aplikacji internetowej platformy Azure.

Objawy i początkowe rozwiązywanie problemów

Zalecamy rozpoczęcie rozwiązywania problemów przez sprawdzenie kondycji rejestru kontenerów.

Aby sprawdzić kondycję rejestru kontenerów, uruchom następujące polecenie:

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

Jeśli zostanie wykryty problem, wyniki zawierają kod błędu i opis. Aby uzyskać więcej informacji na temat tych błędów i możliwych rozwiązań, zobacz Informacje o błędach sprawdzania kondycji.

Uwaga 16.

Jeśli wystąpią błędy związane z programem Helm lub notary, nie oznacza to, że usługa Container Registry lub AKS nie działa lub ma problem. Wskazuje tylko problemy, takie jak to, że program Helm lub Notary nie jest zainstalowany lub że interfejs wiersza polecenia platformy Azure nie jest zgodny z aktualnie zainstalowaną wersją programu Helm lub Notary.

Następnie zidentyfikuj komunikat o błędzie związany z ściąganiem, który jest niezbędny do rozwiązywania problemów:

  1. Zaloguj się w witrynie Azure Portal.
  2. W aplikacji internetowej wybierz pozycję Dziennik centrum>wdrażania. Wybierz zatwierdzenie, aby wyświetlić szczegóły dziennika. Dzienniki procesu ściągania obrazu można również wyświetlić w czasie rzeczywistym, sprawdzając strumień dziennika w sekcji Monitorowanie.

Poniższe sekcje ułatwiają rozwiązywanie problemów z najczęstszymi błędami wyświetlanymi w dziennikach aplikacji internetowej.

Błąd 1: Brak autoryzacji

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

Rozwiązanie dotyczące uwierzytelniania opartego na użytkownikach administratora

Błąd "nieautoryzowane" może być spowodowany nieprawidłowymi poświadczeniami administratora. Obejmuje to serwer logowania, nazwę użytkownika lub hasło skonfigurowane w zmiennych środowiskowych aplikacji internetowej.

Aby rozwiązać problem, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do kontenera rejestru. W sekcji Ustawienia wybierz pozycję Klucze dostępu. Sprawdź ustawienia poświadczeń użytkownika administratora serwera logowania, nazwy użytkownika i hasła.
  2. Przejdź do aplikacji internetowej. W sekcji Ustawienia wybierz pozycję Zmienne środowiskowe.
  3. Upewnij się, że trzy zmienne skonfigurowane dla rejestru kontenerów (serwer logowania, nazwa użytkownika, hasło) są zgodne z ustawieniami poświadczeń użytkownika administratora w kontenerze rejestru.

Rozwiązanie do uwierzytelniania opartego na tożsamościach zarządzanych

W przypadku korzystania z uwierzytelniania Microsoft.ContainerRegistry/registries/pull/read opartego na tożsamości zarządzanej aplikacji internetowej platformy Azure uprawnienie musi zostać przypisane do tożsamości zarządzanej w celu wykonania akcji ściągnięcia.

Wbudowane role platformy Azure zawierające Microsoft.ContainerRegistry/registries/pull/read uprawnienia są następujące:

  • AcrPull
  • AcrPush
  • ReaderContributor
  • Właściciel

Aby uzyskać więcej informacji, zobacz Role i uprawnienia usługi Azure Container Registry.

Po zainicjowaniu operacji ściągania z rejestru kontenerów rola AcrPull jest automatycznie przypisywana do tożsamości zarządzanej aplikacji internetowej platformy Azure. Nie musisz ręcznie dodawać uprawnień. Należy jednak upewnić się, że tworzenie przypisania roli nie jest blokowane przez na przykład zasady platformy Azure. Ponadto sprawdź, czy przypisanie roli nie zostało usunięte.

Błąd 2. Nie można odnaleźć manifestu oznaczonego tagiem <>

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"}

Rozwiązanie: Upewnij się, że tag istnieje

Komunikat o błędzie wskazuje, że nie znaleziono tagu skojarzonego z obrazem, który próbujesz ściągnąć. Upewnij się, że tag istnieje w skojarzonym repozytorium i rejestrze.

Aby użyć interfejsu wiersza polecenia platformy Azure do znalezienia tagów w skojarzonym repozytorium i rejestrze, uruchom następujące polecenie:

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

Aby użyć witryny Azure Portal do znalezienia tagów znajdujących się w skojarzonym repozytorium i rejestrze, wykonaj następujące kroki:

Przejdź do kontenera rejestru. W obszarze Usługi wybierz pozycję Repozytoria, otwórz skojarzone repozytorium, a następnie sprawdź listę tagów.

Uwaga 16.

Polecenie az acr repository show-tags lub sprawdzanie repozytoriów z witryny Azure Portal działa tylko wtedy, gdy reguły sieci rejestru kontenerów zezwalają na to.

Błąd 3. Klient z adresem IP nie ma dozwolonego dostępu

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."}

Rozwiązanie 1. Upewnij się, że wbudowana zapora rejestru kontenerów zezwala na adres IP urządzenia

Domyślnie rejestr kontenerów akceptuje połączenia przez Internet ze wszystkich sieci. Rejestr kontenerów ma wbudowaną zaporę, która może ograniczyć dostęp do określonych adresów IP lub ciDR albo całkowicie wyłączyć dostęp do sieci publicznej.

Ten problem może wystąpić, jeśli adresy IP aplikacji internetowej są blokowane przez wbudowaną zaporę rejestru kontenerów.

Aby rozwiązać ten problem, upewnij się, że wbudowana zapora zezwala na wychodzące adresy IP aplikacji internetowej, która musi ściągnąć obraz.

Aby znaleźć wychodzące adresy IP aplikacji internetowej, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do aplikacji internetowej.
  2. Na stronie Przegląd znajdź adres IP ruchu wychodzącego, a następnie wybierz pozycję Pokaż więcej, aby uzyskać pełną listę wychodzących adresów IP

Aby znaleźć wychodzące adresy IP aplikacji internetowej przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz Znajdowanie wychodzących adresów IP w usłudze aplikacja systemu Azure Service.

Rozwiązanie 2. Konfigurowanie integracji sieci wirtualnej dla aplikacji internetowej

Jeśli musisz w pełni wyłączyć dostęp do sieci publicznej lub zezwolić tylko na wybrane sieci w rejestrze kontenerów bez ręcznego dodawania adresów IP aplikacji internetowej, alternatywną opcją jest prywatne ściąganie obrazu. Aby ściągnąć obrazy prywatnie, musisz skonfigurować rejestr kontenerów przy użyciu prywatnego punktu końcowego i włączyć integrację sieci wirtualnej dla aplikacji internetowej.

Integrację sieci wirtualnej można skonfigurować po stronie aplikacji internetowej, wykonując następujące kroki:

  1. W witrynie Azure Portal przejdź do aplikacji internetowej, a następnie wybierz pozycję Sieć.

  2. W obszarze Konfiguracja ruchu wychodzącego skonfiguruj integrację z siecią wirtualną, wybierz pozycję Dodaj integrację sieci wirtualnej, a następnie określ subskrypcję, sieć wirtualną i podsieć.

  3. Na stronie Konfiguracja sieci wirtualnej upewnij się, że wybrano opcję ściągania obrazu kontenera.

    Zrzut ekranu przedstawiający opcję ściągania obrazu kontenera.

Aby ściągnąć obraz za pośrednictwem sieci wirtualnej, należy włączyć opcję Ściąganie obrazu za pośrednictwem sieci wirtualnej w Centrum wdrażania aplikacji internetowej. Ponadto jeśli rejestr kontenerów ma wyłączony dostęp publiczny lub ustawiony na określone sieci, może zostać wyświetlony komunikat "Nie można załadować tagów usługi ACR — niepowodzenie", jak pokazano w poniższym przykładzie. Ten błąd jest oczekiwany w tym scenariuszu. W takim przypadku opcje listy rozwijanej obrazów i tagów nie będą dostępne. Musisz ręcznie wprowadzić obraz i tag.

Zrzut ekranu przedstawiający komunikat o błędzie nie można załadować tagów usługi ACR.

Następne kroki

Jeśli te wskazówki dotyczące rozwiązywania problemów nie rozwiążą problemu, rozważ następujące kwestie:

Sprawdź sieciowe grupy zabezpieczeń i tabele tras skojarzone z podsieciami. Jeśli urządzenie wirtualne, takie jak zapora, kontroluje ruch między podsieciami, przejrzyj zaporę i jej reguły dostępu.

Użyj usługi Kudu, aby uzyskać dodatkowe informacje dotyczące rozwiązywania problemów. Możesz nawiązać połączenie z usługą Kudu. Na przykład użyj powłoki Bash, aby przetestować rozpoznawanie nazw DNS, uruchamiając polecenie nslookup <acr-name>.azurecr.iolub sprawdzając łączność przy użyciu polecenia tcpping <acr-name>.azurecr.io.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.