Korzystanie z rejestrów kontenerów innych firm

Interfejs wiersza polecenia dla deweloperów platformy Azure (azd) obsługuje zewnętrzne rejestry kontenerów innych firm na potrzeby wdrażania. Aby użyć tej funkcji, należy ręcznie uwierzytelnić się w zewnętrznym rejestrze kontenerów przed wywołaniem polecenia azd deploy.

Uwierzytelnianie oparte na Dockerze jest wymagane tylko wtedy, gdy azd zarządza za Ciebie operacjami na obrazach, takimi jak pobieranie, budowanie, tagowanie lub przesyłanie obrazów. Jeśli usługa jest skonfigurowana przy użyciu services.<name>.docker.imagePassthrough: true, element azd wykorzystuje ponownie skonfigurowany obraz zdalny bez zmian. W takim przypadku azd nie wymaga platformy Docker ani narzędzia Podman i nie wykonuje żadnych kroków uwierzytelniania rejestru ani cyklu życia obrazu dla tej usługi.

Uwierzytelnianie

Uruchom docker login i uwierzytelnij się w zewnętrznym rejestrze kontenerów. Może być konieczne wykonanie większej liczby kroków konfiguracji lub ustawień dla Twojego konkretnego dostawcy rejestru.

docker login <your-registry>

Przykładowe scenariusze

Możesz skonfigurować azd funkcję wypychania i ściągania obrazów z zewnętrznego rejestru kontenerów w azure.yaml pliku szablonu. Obsługa dodatkowych rejestrów kontenerów zapewnia większą elastyczność dla przepływów pracy wdrażania.

Pobieranie z zewnętrznego rejestru kontenerów

W tym przykładzie podczas wdrażania azd kontener jest pobierany z docker.io/username/nginx:latest, a usługa aplikacji kontenerowej odwołuje się do niego bezpośrednio.

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

Uwaga

Konfiguracja infrastruktury aplikacji kontenera musi konfigurować poświadczenia podczas ściągania kontenerów z prywatnych rejestrów kontenerów.

Aby wdrożyć obraz zdalny bez wymagania platformy Docker lub Podman, ustaw services.<name>.docker.imagePassthrough: true i podaj w pełni kwalifikowany obraz, w tym rejestr, w pliku services.<name>.image:

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 ma następujące ograniczenia:

  • Wymaga ustawienia services.<name>.image.
  • Nie można go połączyć z docker.remoteBuild.
  • Nie obsługuje flag zastępowania obrazu azd publish, --from-package i --to dla tej usługi.

Pobieranie, oznaczanie tagiem i wysyłanie do rejestru zewnętrznego

Rozważ plik z następującą konfiguracją azure.yaml :

# 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   

Polecenie azd deploy ściąga skonfigurowany obraz nginx. W tym przypadku jest to publiczny obraz na Docker Hub, więc azd przepisuje tagi kontenera/obrazu i umieszcza go w rejestrze Dockera.

Kompilowanie, tagowanie i przesyłanie do zewnętrznego rejestru przy użyciu azd deploy

Rozważ plik z następującą konfiguracją azure.yaml :

# 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

Polecenie azd deploy kompiluje kontener, taguje go i wypycha go do rejestru platformy Docker.