Verwalten öffentlicher Inhalte mit Azure Container Registry

Dieser Artikel bietet eine Übersicht über Methoden und Workflows zur Verwendung einer lokalen Registrierung, z. B. Azure Container Registry, zum Verwalten von Kopien öffentlicher Inhalte, z. B. Containerimages in Docker Hub.

Risiken bei öffentlichen Inhalten

In Ihrer Umgebung bestehen möglicherweise Abhängigkeiten von öffentlichen Inhalten, z. B. von öffentlichen Containerimages, Helm-Charts, Open Policy Agent-Richtlinien (OPA-Richtlinien) oder anderen Artefakten. Beispielsweise könnten Sie nginx für das Dienstrouting oder docker build FROM alpine ausführen, indem Sie Images direkt aus Docker Hub oder einer anderen öffentlichen Registrierung pullen.

Ohne geeignete Kontrollen können Abhängigkeiten von Inhalten öffentlicher Registrierungen zu Risiken für die Workflows zur Imageentwicklung und -bereitstellung führen. Um diese Risiken zu minimieren, sollten Sie nach Möglichkeit lokale Kopien von öffentlichen Inhalten aufbewahren. Weitere Informationen finden Sie im Blog der Open Container Initiative.

Authentifizieren mit Docker Hub

Wenn Sie derzeit im Rahmen eines Erstellungs- oder Bereitstellungsworkflows öffentliche Images von Docker Hub pullen, empfiehlt es sich in einem ersten Schritt, die Authentifizierung über ein Docker Hub-Konto durchzuführen, anstatt einen anonymen Pull Request auszuführen.

Beim Ausführen von häufigen anonymen Pull Requests wird möglicherweise ein Docker-Fehler wie ERROR: toomanyrequests: Too Many Requests. oder You have reached your pull rate limit. angezeigt. Authentifizieren Sie sich bei Docker Hub, um diese Fehler zu verhindern.

Hinweis

Ab dem 2. November 2020 gelten die Grenzwerte für die Downloadrate für anonyme und authentifizierte Anforderungen an Docker Hub von Docker-Konten im Plan „Free“. Diese Grenzwerte werden durch die IP-Adresse bzw. die Docker-ID erzwungen.

Berücksichtigen Sie bei der Schätzung der Anzahl Ihrer Pull Requests, dass bei der Verwendung von Diensten von Cloudanbietern oder bei der Arbeit hinter einer unternehmenseigenen NAT mehrere Benutzer in Docker Hub insgesamt als Teilmenge von IP-Adressen gelten. Wenn Sie für Anforderungen an Docker Hub eine Authentifizierung über ein kostenpflichtiges Docker-Konto hinzufügen, werden potenzielle Dienstunterbrechungen aufgrund der Drosselung der Ratenbegrenzung vermieden.

Ausführliche Informationen finden Sie unter Docker Pricing and Subscriptions (Docker – Preise und Abonnements) und Docker Terms of Service (Docker-Vertragsbedingungen).

Docker Hub-Zugriffstoken

Docker Hub unterstützt persönliche Zugriffstoken als Alternativen zu einem Docker-Kennwort für die Authentifizierung bei Docker Hub. Token werden für automatisierte Dienste empfohlen, die Images von Docker Hub pullen. Sie können mehrere Token für verschiedene Benutzer oder Dienste generieren und Token widerrufen, wenn sie nicht mehr benötigt werden.

Wenn Sie sich mit einem Token bei docker login authentifizieren möchten, lassen Sie das Kennwort in der Befehlszeile weg. Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie stattdessen das Token ein. Wenn Sie die zweistufige Authentifizierung für das Docker Hub-Konto aktiviert haben, müssen Sie bei der Anmeldung über die Docker-Befehlszeilenschnittstelle ein persönliches Zugriffstoken verwenden.

Authentifizieren über Azure-Dienste

Mehrere Azure-Dienste, einschließlich App Service und Azure Container Instances, unterstützen das Pullen von Images aus öffentlichen Registrierungen, z. B. Docker Hub für Containerbereitstellungen. Wenn Sie ein Image über Docker Hub bereitstellen möchten, empfiehlt es sich, die Einstellungen für die Authentifizierung über ein Docker Hub-Konto zu konfigurieren. Beispiele:

App Service

  • Imagequelle: Docker Hub
  • Repositoryzugriff: Privat
  • Anmeldung:<Docker Hub-Benutzername>
  • Kennwort:<Docker Hub-Token>

Weitere Informationen finden Sie unter Docker Hub authenticated pulls on App Service (Über Docker Hub authentifizierte Pulls in App Service).

Azure Container Instances

  • Imagequelle: Docker Hub oder andere Registrierung
  • Imagetyp: Privat
  • Anmeldeserver für die Imageregistrierung: docker.io
  • Benutzername für Imageregistrierung:<Docker Hub-Benutzername>
  • Kennwort für Imageregistrierung:<Docker Hub-Token>
  • Image: docker.io/<Repositoryname>:<Tag>

Konfigurieren des Artifact Cache für die Nutzung öffentlicher Inhalte

Die bewährten Methoden zum Verwenden öffentlicher Inhalte bestehen darin, die Registrierungsauthentifizierung und das Artifact Cache-Feature zu kombinieren. Sie können den Artifact Cache verwenden, um Ihre Containerartefakte auch in privaten Netzwerken in Ihrer Azure Container Registry zwischenzuspeichern. Die Verwendung des Artifact Cache schützt Sie nicht nur vor Registrierungsratenbeschränkungen, sondern erhöht die Pullzuverlässigkeit in Kombination mit geo-repliziertem ACR, um Artefakte aus der Region abzurufen, die Ihrer Azure-Ressource am nächsten kommt. Darüber hinaus können Sie auch alle Sicherheitsfeatures verwenden, die ACR bietet, einschließlich privater Netzwerke, Firewallkonfiguration, Dienstprinzipalen und mehr. Vollständige Informationen zur Verwendung öffentlicher Inhalte mit ACR Artifact Cache finden Sie im Tutorial Artifact Cache.

Importieren von Images in eine Azure Container Registry-Instanz

Zum Verwalten von Kopien öffentlicher Images können Sie zunächst eine Instanz von Azure Container Registry erstellen, wenn Sie noch nicht über eine verfügen. Sie können Registrierung über die Azure-Befehlszeilenschnittstelle, das Azure-Portal, Azure PowerShell oder andere Tools erstellen.

Als einmaliger Schritt wird empfohlen, Basisimages und andere öffentliche Inhalte in Ihre Azure Container Registry-Instanz zu importieren. Der Befehl az acr import in der Azure-Befehlszeilenschnittstelle unterstützt den Import von Images aus öffentlichen Registrierungen, z. B. Docker Hub und Microsoft Container Registry, und aus anderen privaten Containerregistrierungen.

Für az acr import ist keine lokale Docker-Installation erforderlich. Sie können diesen Befehl in einer lokalen Installation der Azure-Befehlszeilenschnittstelle oder direkt in Azure Cloud Shell ausführen. Er unterstützt Images mit allen Betriebssystemen, Images mit mehreren Architekturen oder OCI-Artefakte (z. B. Helm-Charts).

Je nach den Anforderungen Ihrer Organisation können Sie den Import in einer dedizierten Registrierung oder in einem Repository in einer freigegebenen Registrierung durchführen.

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

Aktualisieren von Imageverweisen

Entwickler von Anwendungsimages müssen sicherstellen, dass der Code auf lokale Inhalte unter ihrer Kontrolle verweist.

  • Aktualisieren Sie Imageverweise für die Verwendung der privaten Registrierung. Aktualisieren Sie beispielsweise eine FROM baseimage:v1 -Anweisung in einem Dockerfile in FROM myregistry.azurecr.io/mybaseimage:v1.
  • Konfigurieren Sie Anmeldeinformationen oder einen Authentifizierungsmechanismus für die Verwendung der privaten Registrierung. Der genaue Mechanismus hängt von den Tools ab, die Sie für den Zugriff auf die Registrierung verwenden, sowie davon, wie Sie den Benutzerzugriff verwalten.
    • Wenn Sie einen Kubernetes-Cluster oder Azure Kubernetes Service verwenden, um auf die Registrierung zu zugreifen, finden Sie weitere Informationen in den Authentifizierungsszenarien.
    • Weitere Informationen zu Authentifizierungsoptionen mit einer Azure-Containerregistrierung finden Sie hier.

Automatisieren der Aktualisierung von Anwendungsimages

Zum Erweitern des Imageimports richten Sie einen Azure Container Registry-Task ein, um Buildvorgänge für Anwendungsimages zu automatisieren, wenn Basisimages aktualisiert werden. Ein automatisierter Buildtask kann Updates des Basisimages und Updates des Quellcodes nachverfolgen.

Ein detailliertes Beispiel finden Sie unter Verwenden und Verwalten von öffentlichen Inhalten mit Azure Container Registry Tasks.

Hinweis

Ein einzelner vorkonfigurierter Task kann automatisch alle Anwendungsimages neu erstellen, die auf ein abhängiges Basisimage verweisen.

Nächste Schritte