Zarządzanie zawartością publiczną za pomocą usługi Azure Container Registry

W tym artykule omówiono praktyki i przepływy pracy służące do używania rejestru lokalnego, takiego jak rejestr kontenerów platformy Azure do obsługi kopii zawartości publicznej, takich jak obrazy kontenerów w usłudze Docker Hub.

Zagrożenia związane z zawartością publiczną

Środowisko może mieć zależności od zawartości publicznej, takiej jak obrazy kontenerów publicznych, wykresy helm, zasady Open Policy Agent (OPA) lub inne artefakty. Można na przykład uruchomić serwer nginx na potrzeby routingu usług lub docker build FROM alpine ściągając obrazy bezpośrednio z usługi Docker Hub lub innego rejestru publicznego.

Bez odpowiednich mechanizmów kontroli zależności od zawartości rejestru publicznego mogą powodować ryzyko związane z tworzeniem obrazów i przepływami pracy wdrażania. Aby ograniczyć ryzyko, zachowaj lokalne kopie zawartości publicznej, gdy jest to możliwe. Aby uzyskać szczegółowe informacje, zobacz blog Open Container Initiative (Open Container Initiative).

Uwierzytelnianie za pomocą usługi Docker Hub

W pierwszym kroku, jeśli obecnie ściągasz publiczne obrazy z usługi Docker Hub w ramach przepływu pracy kompilacji lub wdrażania, zalecamy uwierzytelnianie przy użyciu konta usługi Docker Hub zamiast tworzenia anonimowego żądania ściągnięcia.

Podczas wykonywania częstych anonimowych żądań ściągnięcia mogą wystąpić błędy platformy Docker podobne do ERROR: toomanyrequests: Too Many Requests. lub You have reached your pull rate limit. Uwierzytelnianie w usłudze Docker Hub, aby zapobiec tym błędom.

Uwaga

Od 2 listopada 2020 r . limity szybkości pobierania mają zastosowanie do żądań anonimowych i uwierzytelnionych do usługi Docker Hub z kont planu bezpłatnego platformy Docker i są wymuszane odpowiednio przez adres IP i identyfikator platformy Docker.

Podczas szacowania liczby żądań ściągnięcia należy wziąć pod uwagę, że w przypadku korzystania z usług dostawcy usług w chmurze lub pracy za firmowym translatorem adresów sieciowych wielu użytkowników zostanie przedstawionych usłudze Docker Hub w agregacji jako podzbiór adresów IP. Dodanie uwierzytelniania konta płatnego platformy Docker do żądań wysyłanych do usługi Docker Hub pozwoli uniknąć potencjalnych zakłóceń w działaniu usługi z powodu ograniczania szybkości.

Aby uzyskać szczegółowe informacje, zobacz Cennik i subskrypcje platformy Docker oraz Warunki użytkowania platformy Docker.

Token dostępu usługi Docker Hub

Usługa Docker Hub obsługuje osobiste tokeny dostępu jako alternatywy dla hasła platformy Docker podczas uwierzytelniania w usłudze Docker Hub. Tokeny są zalecane w przypadku usług automatycznych, które ściągają obrazy z usługi Docker Hub. Możesz wygenerować wiele tokenów dla różnych użytkowników lub usług i odwołać tokeny, gdy nie będą już potrzebne.

Aby uwierzytelnić docker login się przy użyciu tokenu, pomiń hasło w wierszu polecenia. Po wyświetleniu monitu o hasło wprowadź token. Jeśli włączono uwierzytelnianie dwuskładnikowe dla konta usługi Docker Hub, musisz użyć osobistego tokenu dostępu podczas logowania się z poziomu interfejsu wiersza polecenia platformy Docker.

Uwierzytelnianie z usług platformy Azure

Kilka usług platformy Azure, w tym App Service i Azure Container Instances, obsługuje ściąganie obrazów z publicznych rejestrów, takich jak Docker Hub na potrzeby wdrożeń kontenerów. Jeśli musisz wdrożyć obraz z usługi Docker Hub, zalecamy skonfigurowanie ustawień do uwierzytelniania przy użyciu konta usługi Docker Hub. Przykłady:

App Service

  • Źródło obrazu: Docker Hub
  • Dostęp do repozytorium: prywatny
  • Logowanie: <nazwa użytkownika usługi Docker Hub>
  • Hasło: <token usługi Docker Hub>

Aby uzyskać szczegółowe informacje, zobacz Ściągnięcia uwierzytelnione w usłudze App Service w usłudze Docker Hub.

Azure Container Instances

  • Źródło obrazu: Docker Hub lub inny rejestr
  • Typ obrazu: Prywatny
  • Serwer logowania rejestru obrazów: docker.io
  • Nazwa użytkownika rejestru obrazów: <nazwa użytkownika usługi Docker Hub>
  • Hasło rejestru obrazów: <token usługi Docker Hub>
  • Obraz: docker.io/< repo name>:<tag>

Konfigurowanie pamięci podręcznej artefaktów w celu korzystania z zawartości publicznej

Najlepszym rozwiązaniem do korzystania z zawartości publicznej jest połączenie uwierzytelniania rejestru i funkcji Artifact Cache. Możesz użyć usługi Artifact Cache do buforowania artefaktów kontenera w usłudze Azure Container Registry nawet w sieciach prywatnych. Użycie usługi Artifact Cache nie tylko chroni cię przed limitami szybkości rejestru, ale znacznie zwiększa niezawodność ściągania w połączeniu z geograficznie replikowanym rejestrem ACR w celu ściągania artefaktów z niezależnie od regionu, który znajduje się najbliżej zasobu platformy Azure. Ponadto można również korzystać ze wszystkich funkcji zabezpieczeń usługi ACR, w tym sieci prywatnych, konfiguracji zapory, jednostek usługi i nie tylko. Aby uzyskać pełne informacje na temat korzystania z zawartości publicznej w usłudze ACR Artifact Cache, zapoznaj się z samouczkiem dotyczącym usługi Artifact Cache .

Importowanie obrazów do rejestru kontenerów platformy Azure

Aby rozpocząć zarządzanie kopiami obrazów publicznych, możesz utworzyć rejestr kontenerów platformy Azure, jeśli jeszcze go nie masz. Utwórz rejestr przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal, programu Azure PowerShell lub innych narzędzi.

W ramach zalecanego jednorazowego kroku zaimportuj obrazy podstawowe i inną zawartość publiczną do rejestru kontenerów platformy Azure. Polecenie az acr import w interfejsie wiersza polecenia platformy Azure obsługuje importowanie obrazów z rejestrów publicznych, takich jak Docker Hub i Microsoft Container Registry oraz z innych prywatnych rejestrów kontenerów.

az acr import nie wymaga lokalnej instalacji platformy Docker. Można ją uruchomić przy użyciu lokalnej instalacji interfejsu wiersza polecenia platformy Azure lub bezpośrednio w usłudze Azure Cloud Shell. Obsługuje obrazy dowolnego typu systemu operacyjnego, obrazy z wieloma architekturami lub artefakty OCI, takie jak wykresy programu Helm.

W zależności od potrzeb organizacji można zaimportować do dedykowanego rejestru lub repozytorium w rejestrze udostępnionym.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

Aktualizowanie odwołań do obrazów

Deweloperzy obrazów aplikacji powinni upewnić się, że ich kod odwołuje się do zawartości lokalnej pod kontrolą.

  • Zaktualizuj odwołania do obrazów, aby używać rejestru prywatnego. Na przykład zaktualizuj instrukcję FROM baseimage:v1 w pliku Dockerfile do FROM myregistry.azurecr.io/mybaseimage:v1
  • Skonfiguruj poświadczenia lub mechanizm uwierzytelniania do korzystania z rejestru prywatnego. Dokładny mechanizm zależy od narzędzi używanych do uzyskiwania dostępu do rejestru i sposobu zarządzania dostępem użytkowników.
    • Jeśli do uzyskiwania dostępu do rejestru używasz klastra Kubernetes lub usługi Azure Kubernetes Service, zobacz scenariusze uwierzytelniania.
    • Dowiedz się więcej o opcjach uwierzytelniania w rejestrze kontenerów platformy Azure.

Automatyzowanie aktualizacji obrazów aplikacji

Rozszerzanie importowania obrazów umożliwia skonfigurowanie zadania usługi Azure Container Registry w celu zautomatyzowania kompilacji obrazu aplikacji podczas aktualizowania obrazów podstawowych. Zadanie automatycznej kompilacji może śledzić zarówno aktualizacje obrazu podstawowego, jak i aktualizacje kodu źródłowego.

Szczegółowy przykład można znaleźć w temacie How to consume and maintain public content with Azure Container Registry Tasks (Jak używać i obsługiwać zawartość publiczną za pomocą zadań usługi Azure Container Registry).

Uwaga

Jedno wstępnie skonfigurowane zadanie może automatycznie ponownie skompilować każdy obraz aplikacji, który odwołuje się do zależnego obrazu podstawowego.

Następne kroki