Verwenden von Drittanbieter-Containerregistrierungen

Azure Developer CLI () unterstützt externe Containerregistries von Drittanbietern für Bereitstellungen. Um diese Funktion zu verwenden, müssen Sie sich vor dem Aufruf von deploy manuell bei der externen Containerregistrierung authentifizieren.

Docker-basierte Authentifizierung ist nur erforderlich, wenn azd Image-Vorgänge für Sie ausführt, z. B. beim Herunterladen, Erstellen, Taggen oder Hochladen von Images. Wenn ein Dienst mit services.<name>.docker.imagePassthrough: true konfiguriert ist, verwendet azd das konfigurierte Remote-Image unverändert wieder. In diesem Fall benötigt azd weder Docker noch Podman und führt für diesen Dienst keine Schritte zur Authentifizierung bei Registrys oder im Image-Lebenszyklus aus.

Authentifizierung

Führen Sie aus und authentifizieren Sie sich bei Ihrer externen Container-Registry. Möglicherweise müssen Sie weitere Setup- oder Konfigurationsschritte für Ihren jeweiligen Registrierungsanbieter ausführen.

docker login <your-registry>

Beispielszenarien

Sie können so konfigurieren, dass Images mit einer externen Containerregistrierung in der Datei Ihrer Vorlage gepusht und gepullt werden können. Die Unterstützung für weitere Containerregistrierungen bietet eine größere Flexibilität für Ihre Bereitstellungsworkflows.

Aus einer externen Container-Registry abrufen

In diesem Beispiel wird der Container während der Bereitstellung mit aus abgerufen und direkt vom Container-App-Dienst referenziert.

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp

Hinweis

Ihre containerapp infra-Konfiguration muss Anmeldeinformationen konfigurieren, wenn Sie Container aus privaten Containerregistrierungen abrufen.

Um ein Remote-Image ohne Docker oder Podman zu verwenden, setzen Sie services.<name>.docker.imagePassthrough: true und geben Sie das vollständig qualifizierte Image, einschließlich der Registry, in services.<name>.image an:

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp
    docker:
      imagePassthrough: true

imagePassthrough hat die folgenden Einschränkungen:

  • services.<name>.image muss festgelegt sein.
  • Es kann nicht mit docker.remoteBuild kombiniert werden.
  • Es unterstützt für den Dienst die Flags zum Überschreiben von Images azd publish, --from-package und --to nicht.

Pullen, taggen und in externe Registry pushen

Betrachten Sie eine Datei mit der folgenden Konfiguration:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: nginx
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: nginx
      tag: latest   

Der azd deploy Befehl ruft das konfigurierte nginx-Image ab. In diesem Fall handelt es sich um ein öffentliches Image auf Docker Hub, also azd markiert das Container-Image neu und schiebt es in das Docker-Register.

Erstellen, taggen und in eine externe Registry pushen bei azd deploy

Betrachten Sie eine -Datei mit der folgenden Konfiguration:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: todo-api

Der azd deploy Befehl erstellt den Container, markiert ihn und überträgt ihn an die Docker-Registrierung.