Udostępnij za pośrednictwem


Importowanie obrazów kontenerów do rejestru kontenerów

Obrazy kontenerów (kopiowania) można łatwo zaimportować do rejestru kontenerów platformy Azure bez użycia poleceń platformy Docker. Na przykład zaimportuj obrazy z rejestru deweloperów do rejestru produkcyjnego lub skopiuj obrazy podstawowe z rejestru publicznego.

Usługa Azure Container Registry obsługuje wiele typowych scenariuszy kopiowania obrazów i innych artefaktów z istniejącego rejestru:

  • Importowanie obrazów z rejestru publicznego

  • Importowanie obrazów lub artefaktów OCI, w tym wykresów helm 3 z innego rejestru kontenerów platformy Azure, w tym samym lub innej subskrypcji lub dzierżawy platformy Azure

  • Importowanie z prywatnego rejestru kontenerów spoza platformy Azure

Importowanie obrazu do rejestru kontenerów platformy Azure ma następujące korzyści wynikające z używania poleceń interfejsu wiersza polecenia platformy Docker:

  • Jeśli środowisko klienta nie wymaga lokalnej instalacji platformy Docker, możesz zaimportować dowolny obraz kontenera niezależnie od obsługiwanego typu systemu operacyjnego.

  • W przypadku importowania obrazów z wieloma architekturami (takich jak oficjalne obrazy platformy Docker) obrazy dla wszystkich architektur i platform określonych na liście manifestów zostaną skopiowane.

  • Jeśli masz dostęp do rejestru docelowego, nie potrzebujesz publicznego punktu końcowego rejestru.

Ważne

  • Importowanie obrazów wymaga obsługi rejestru zewnętrznego RFC 7233. Zalecamy użycie rejestru obsługującego zakresy RFC 7233 podczas używania polecenia az acr import z identyfikatorem URI rejestru, aby uniknąć błędów.

Ograniczenia

  • Maksymalna liczba manifestów dla zaimportowanego obrazu wynosi 50.
  • Maksymalny rozmiar warstwy obrazu zaimportowanego z rejestru publicznego to 2 GiB.

Aby zaimportować obrazy kontenerów, ten artykuł wymaga uruchomienia interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell lub lokalnie (zalecana wersja 2.0.55 lub nowsza). Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Uwaga

Jeśli musisz dystrybuować identyczne obrazy kontenerów w wielu regionach świadczenia usługi Azure, usługa Azure Container Registry obsługuje również replikację geograficzną. Dzięki replikacji geograficznej rejestru (wymagana warstwa usługi Premium) można obsługiwać wiele regionów z identycznymi nazwami obrazów i tagów z jednego rejestru.

Ważne

Wprowadzono zmiany w importowaniu obrazów między dwoma rejestrami kontenerów platformy Azure od stycznia 2021 r.:

  • Importowanie do lub z rejestru kontenerów platformy Azure z ograniczeniami sieci wymaga rejestru z ograniczeniami, aby zezwolić na dostęp przez zaufane usługi w celu obejścia sieci. Domyślnie ustawienie jest włączone, zezwalając na importowanie. Jeśli ustawienie nie jest włączone w nowo utworzonym rejestrze z prywatnym punktem końcowym lub regułami zapory rejestru, importowanie zakończy się niepowodzeniem.
  • W istniejącym rejestrze kontenerów platformy Azure z ograniczeniami sieci, który jest używany jako źródło importu lub obiekt docelowy, włączenie tej funkcji zabezpieczeń sieci jest opcjonalne, ale zalecane.

Wymagania wstępne

Jeśli nie masz jeszcze rejestru kontenerów platformy Azure, utwórz rejestr. Aby uzyskać instrukcje, zobacz Szybki start: tworzenie prywatnego rejestru kontenerów przy użyciu interfejsu wiersza polecenia platformy Azure.

Aby zaimportować obraz do rejestru kontenerów platformy Azure, tożsamość musi mieć uprawnienia do zapisu w rejestrze docelowym (co najmniej rola Współautor lub rola niestandardowa, która zezwala na akcję importImage). Zobacz Role i uprawnienia usługi Azure Container Registry.

Importowanie z rejestru publicznego

Ważne

Aby zaimportować z rejestru publicznego do rejestru kontenerów platformy Azure z ograniczeniami sieci, wymagany jest rejestr ograniczony, aby umożliwić dostęp zaufanym usługom w celu obejścia sieci. Domyślnie ustawienie jest włączone, zezwalając na importowanie. Jeśli ustawienie nie jest włączone w nowo utworzonym rejestrze z prywatnym punktem końcowym lub regułami zapory rejestru, importowanie zakończy się niepowodzeniem.

Importowanie z usługi Docker Hub

Na przykład użyj polecenia az acr import , aby zaimportować obraz z wieloma architekturami hello-world:latest z usługi Docker Hub do rejestru o nazwie myregistry. Ponieważ hello-world jest to oficjalny obraz z usługi Docker Hub, ten obraz znajduje się w domyślnym library repozytorium. Dołącz nazwę repozytorium i opcjonalnie tag w wartości parametru --source obrazu. (Opcjonalnie można zidentyfikować obraz za pomocą skrótu manifestu zamiast tagu, co gwarantuje określoną wersję obrazu).

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

Aby sprawdzić, czy z tym obrazem jest skojarzonych wiele manifestów, uruchom polecenie az acr manifest list-metadata :

az acr manifest list-metadata \
  --name hello-world \
  --registry myregistry

Aby zaimportować artefakt przez skrót bez dodawania tagu:

az acr import \
   --name myregistry \
   --source docker.io/library/hello-world@sha256:abc123 \
   --repository hello-world

Jeśli masz konto usługi Docker Hub, zalecamy użycie poświadczeń podczas importowania obrazu z usługi Docker Hub. Przekaż nazwę użytkownika usługi Docker Hub i hasło lub osobisty token dostępu jako parametry do az acr import. Poniższy przykład importuje publiczny obraz z tensorflow repozytorium w usłudze Docker Hub przy użyciu poświadczeń usługi Docker Hub:

az acr import \
  --name myregistry \
  --source docker.io/tensorflow/tensorflow:latest-gpu \
  --image tensorflow:latest-gpu
  --username <Docker Hub user name>
  --password <Docker Hub token>

Importowanie z usługi Microsoft Container Registry

Na przykład zaimportuj ltsc2019 obraz systemu Windows Server Core z windows repozytorium w usłudze Microsoft Container Registry.

az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019

Importowanie z rejestru kontenerów platformy Azure w tej samej dzierżawie usługi AD

Obraz można zaimportować z rejestru kontenerów platformy Azure w tej samej dzierżawie usługi AD przy użyciu zintegrowanych uprawnień firmy Microsoft Entra.

  • Tożsamość musi mieć uprawnienia firmy Microsoft Entra do odczytu z rejestru źródłowego (roli Czytelnik) i importowania do rejestru docelowego (rola Współautor lub rola niestandardowa, która zezwala na akcję importImage).

  • Rejestr może znajdować się w tej samej lub innej subskrypcji platformy Azure w tej samej dzierżawie usługi Active Directory.

  • Publiczny dostęp do rejestru źródłowego jest wyłączony. Jeśli dostęp publiczny jest wyłączony, określ rejestr źródłowy według identyfikatora zasobu zamiast według nazwy serwera logowania rejestru.

  • Rejestr źródłowy i/lub rejestr docelowy z prywatnym punktem końcowym lub regułami zapory rejestru muszą zapewnić, że rejestr ograniczony zezwala zaufanym usługom na dostęp do sieci.

Importowanie z rejestru w tej samej subskrypcji

Na przykład zaimportuj aci-helloworld:latest obraz z rejestru źródłowego mysourceregistry do usługi myregistry w tej samej subskrypcji platformy Azure.

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld:latest \
  --image aci-helloworld:latest

Poniższy przykład importuje aci-helloworld:latest obraz do usługi myregistry z rejestru źródłowego mysourceregistry , w którym jest wyłączony dostęp do publicznego punktu końcowego rejestru. Podaj identyfikator zasobu rejestru źródłowego za pomocą parametru --registry . Zwróć uwagę, że --source parametr określa tylko repozytorium źródłowe i tag, a nie nazwę serwera logowania rejestru.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-helloworld:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Poniższy przykład importuje obraz według skrótu manifestu (skrót SHA-256, reprezentowany jako sha256:...) zamiast według tagu:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg

Importowanie z rejestru w innej subskrypcji

Uwaga

Aby zaimportować obraz z jednego rejestru do innego, źródłowe i docelowe rejestry muszą upewnić się, że oba regiony są zarejestrowane dla usługi Azure Container Registry (ACR) w ramach dostawców zasobów subskrypcji.

W poniższym przykładzie usługa mysourceregistry znajduje się w innej subskrypcji niż myregistry w tej samej dzierżawie usługi Active Directory. Podaj identyfikator zasobu rejestru źródłowego za pomocą parametru --registry . Zwróć uwagę, że --source parametr określa tylko repozytorium źródłowe i tag, a nie nazwę serwera logowania rejestru.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-hello-world:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Importowanie z rejestru przy użyciu poświadczeń jednostki usługi

Aby zaimportować z rejestru, do którego nie można uzyskać dostępu przy użyciu zintegrowanych uprawnień usługi Active Directory, możesz użyć poświadczeń jednostki usługi (jeśli są dostępne) w rejestrze źródłowym. Podaj identyfikator appID i hasło jednostki usługi Active Directory, która ma dostęp ACRPull do rejestru źródłowego. Użycie jednostki usługi jest przydatne w przypadku systemów kompilacji i innych nienadzorowanych systemów, które muszą importować obrazy do rejestru.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Importowanie z rejestru kontenerów platformy Azure w innej dzierżawie usługi AD

Aby zaimportować z rejestru kontenerów platformy Azure w innej dzierżawie firmy Microsoft Entra, określ rejestr źródłowy według nazwy serwera logowania i podaj poświadczenia umożliwiające dostęp ściągania do rejestru.

  • Importowanie między dzierżawami za pośrednictwem rejestru wyłączonego dostępu publicznego nie jest obsługiwane.

Importowanie między dzierżawami przy użyciu nazwy użytkownika i hasła

Na przykład użyj tokenu i hasła o zakresie repozytorium lub identyfikatora aplikacji i hasła jednostki usługi Active Directory, która ma dostęp ACRPull do rejestru źródłowego.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Importowanie między dzierżawami przy użyciu tokenu dostępu

  • Importowanie między dzierżawami za pośrednictwem rejestru wyłączonego dostępu publicznego nie jest obsługiwane.

Aby uzyskać dostęp do rejestru źródłowego przy użyciu tożsamości w dzierżawie źródłowej, która ma uprawnienia rejestru, możesz uzyskać token dostępu:

# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>

# Get access token returned by `az account get-access-token`
az account get-access-token

W dzierżawie docelowej przekaż token dostępu jako hasło do az acr import polecenia . Rejestr źródłowy określa nazwę serwera logowania. Zwróć uwagę, że w tym poleceniu nie jest wymagana żadna nazwa użytkownika:

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --password <access-token>

Importowanie z prywatnego rejestru kontenerów spoza platformy Azure

Zaimportuj obraz z rejestru prywatnego spoza platformy Azure, określając poświadczenia, które umożliwiają dostęp ściągania do rejestru. Możesz na przykład ściągnąć obraz z prywatnego rejestru platformy Docker:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

Następne kroki

W tym artykule przedstawiono informacje na temat importowania obrazów kontenerów do rejestru kontenerów platformy Azure z rejestru publicznego lub innego rejestru prywatnego.