Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Azure-Containerregistrierung ist eine private Docker-Registrierung, die in Azure bereitgestellt wird und die Sie netzwerknah zu Ihren Bereitstellungen anordnen können. In diesen drei Tutorialartikeln wird beschrieben, wie Sie die Georeplikation zum Bereitstellen einer ASP.NET Core-Webanwendung, die in einem Linux-Container ausgeführt wird, auf zwei Instanzen vom Typ Web-Apps für Container verwenden. Es wird veranschaulicht, wie das Image von Azure aus dem jeweils nächstgelegenen georeplizierten Repository automatisch auf den einzelnen Web-App-Instanzen bereitgestellt wird.
Dieses Tutorial ist der erste Teil einer dreiteiligen Serie:
- Erstellen einer georeplizierten Azure-Containerregistrierung
- Klonen des Anwendungsquellcodes von GitHub
- Erstellen eines Docker-Containerimage aus der Anwendungsquelle
- Übertragen des Containerimage per Push an Ihre Registrierung
In nachfolgenden Tutorials stellen Sie den Container aus Ihrer privaten Registrierung für eine Web-App bereit, die in zwei Azure-Regionen ausgeführt wird. Anschließend aktualisieren Sie den Code in der Anwendung und aktualisieren beide Web-App-Instanzen mit einem einzelnen docker push-Element für Ihre Registrierung.
Voraussetzungen
Für dieses Tutorial wird eine lokale Installation der Azure CLI (ab Version 2.0.31) benötigt. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Sie sollten mit zentralen Docker-Konzepten wie Containern und Containerimages sowie mit grundlegenden Docker CLI-Befehlen vertraut sein. Eine Einführung in Container finden Sie bei Bedarf unter Get started with Docker (Erste Schritte mit Docker).
Für dieses Tutorial wird eine lokale Docker-Installation benötigt. Docker-Installationsanleitungen stehen für Systeme unter macOS, Windows und Linux zur Verfügung.
Azure Cloud Shell enthält nicht die Docker-Komponenten, die erforderlich sind, um jeden Schritt dieses Lernprogramms auszuführen. Aus diesem Grund empfehlen wir Ihnen eine lokale Installation der Azure CLI und der Docker-Entwicklungsumgebung.
Erstellen einer Containerregistrierung
Für dieses Tutorial benötigen Sie eine Azure-Containerregistrierung auf der Dienstebene „Premium“. Führen Sie zum Erstellen einer neuen Azure-Containerregistrierung die Schritte in der Schnellstartanleitung aus: Erstellen einer Azure-Containerregistrierung mithilfe des Azure-Portals. Achten Sie darauf, die folgenden Optionen auszuwählen:
- Wählen Sie für Preisplan (SKU ) Premium aus, das für die Georeplikation erforderlich ist.
- Erstellen Sie die Registrierung in der Region West-USA . Auf diese Region wird in diesem Lernprogramm verwiesen, um die Georeplikation zu veranschaulichen.
- Da es sich bei Azure-Containerregistrierungen normalerweise um Ressourcen mit langer Lebensdauer handelt, die übergreifend für mehrere Containerhosts verwendet werden, empfehlen wir Ihnen, Ihre Registrierung in einer eigenen Ressourcengruppe zu erstellen. Wenn Sie georeplizierte Registrierungen und Webhooks konfigurieren, werden diese zusätzlichen Ressourcen in derselben Ressourcengruppe angeordnet.
Tipp
Wenn Sie zuvor eine Registrierung erstellt haben und ein Upgrade durchführen müssen, lesen Sie "Ändern von SKUs".
Im weiteren Verlauf dieses Tutorials verwenden wir <acrName> als Platzhalter für den Registrierungsnamen Ihres Containers.
Konfigurieren der Georeplikation
Nachdem Sie nun über eine Premium-Registrierung verfügen, können Sie die Georeplikation konfigurieren. Ihre Web-App, die Sie im nächsten Tutorial für die Ausführung in zwei Regionen konfigurieren, kann ihre Containerimages dann per Pullvorgang aus der nächstgelegenen Registrierung beziehen.
Wechseln Sie zur Containerregistrierung im Azure-Portal. Wählen Sie im Dienstmenü unter "Dienste" die Option "Georeplikationen" aus.
Im Bereich "Georeplikationen " wird eine Karte angezeigt, die Azure-Regionen anzeigt, die für die Georeplikation verfügbar sind.
Um Ihre Registrierung in die Region Ost-USA zu replizieren, wählen Sie das grüne Sechseck für diese Region aus. Bestätigen Sie im Bereich " Replikation erstellen ", ob der richtige Bereich angezeigt wird, und wählen Sie dann "Erstellen" aus.
Nach Abschluss der Replikation werden beide Regionen im Bereich "Georeplikationen " mit dem Status "Bereit" aufgeführt.
Tipp
Sie können die Georeplikation nicht für Register verwenden, die eine Richtlinie zum vorläufigen Löschen verwenden.
Aktivieren des Administratorkontos
In den nachfolgenden Tutorials stellen Sie ein Containerimage aus der Registrierung direkt für Web-App für Container bereit. Zum Aktivieren dieser Funktion müssen Sie auch das Administratorkonto der Registrierung aktivieren.
Wechseln Sie im Azure-Portal zur Containerregistrierung. Wählen Sie im Dienstmenü unter EinstellungenZugriffsschlüssel aus. Wählen Sie das Feld für Administratorbenutzer aus.
Anmeldung bei der Containerregistrierung
Nachdem Sie nun die Georeplikation konfiguriert haben, erstellen Sie ein Containerimage und übertragen es per Pushvorgang in Ihre Registrierung. Sie müssen sich zuerst bei Ihrer Registrierung anmelden, bevor Sie dafür Images per Pushvorgang übertragen können.
Verwenden Sie den Befehl az acr login, um sich zu authentifizieren und die Anmeldeinformationen für Ihre Registrierung zwischenzuspeichern. Ersetzen Sie <acrName> durch den Namen der Registrierung, die Sie zuvor erstellt haben.
az acr login --name <acrName>
Der Befehl gibt Login Succeeded zurück, wenn der Vorgang abgeschlossen ist.
Abrufen von Anwendungscode
Das Beispiel in diesem Tutorial enthält eine kleine Webanwendung, die mit ASP.NET Core erstellt wurde. Die App stellt eine HTML-Seite bereit, auf der die Region angezeigt wird, aus der das Image von Azure Container Registry bereitgestellt wurde.
Verwenden Sie Git, um das Beispiel in ein lokales Verzeichnis herunterzuladen, und wechseln Sie mit cd in das Verzeichnis:
git clone https://github.com/Azure-Samples/acr-helloworld.git
cd acr-helloworld
Sollte git nicht installiert sein, können Sie das ZIP-Archiv direkt von GitHub herunterladen.
Aktualisieren der Dockerfile
Mit der im Beispiel enthaltenen Dockerfile wird veranschaulicht, wie der Container erstellt wird. Den Ausgangspunkt bildet ein offizielles ASP.NET Core-Runtimeimage. Anschließend werden die Anwendungsdateien in den Container kopiert und die Abhängigkeiten installiert, die Ausgabe wird mit dem offiziellen .NET Core SDK-Image kompiliert, und zuletzt wird ein optimiertes aspnetcore-Image erstellt.
Die Dockerfile befindet sich in der geklonten Quelle unter ./AcrHelloworld/Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
# Update <acrName> with the name of your registry
# Example: uniqueregistryname.azurecr.io
ENV DOCKER_REGISTRY <acrName>.azurecr.io
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY *.sln ./
COPY AcrHelloworld/AcrHelloworld.csproj AcrHelloworld/
RUN dotnet restore
COPY . .
WORKDIR /src/AcrHelloworld
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS production
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "AcrHelloworld.dll"]
Die Anwendung im Image acr-helloworld versucht, die Region zu ermitteln, aus der der Container bereitgestellt wurde. Hierfür werden Informationen zum Anmeldeserver der Registrierung vom DNS abgefragt. Geben Sie in der Dockerfile in der Umgebungsvariablen DOCKER_REGISTRY den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) des Anmeldeservers Ihrer Registrierung an.
Rufen Sie zunächst mithilfe des Befehls az acr show den Anmeldeserver Ihrer Registrierung ab. Ersetzen Sie <acrName> durch den Namen der Registrierung, die Sie in den vorherigen Schritten erstellt haben.
az acr show --name <acrName> --query "{acrLoginServer:loginServer}" --output table
Ausgabe:
AcrLoginServer
-----------------------------
uniqueregistryname.azurecr.io
Aktualisieren Sie als Nächstes die Zeile ENV DOCKER_REGISTRY mit dem FQDN des Anmeldeservers Ihrer Registrierung. In diesem Beispiel wird der Beispielregistrierungsname uniqueregistryname verwendet:
ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io
Erstellen des Containerimage
Nachdem Sie die Dockerfile mit dem FQDN des Anmeldeservers Ihrer Registrierung aktualisiert haben, können Sie docker build verwenden, um das Containerimage zu erstellen. Führen Sie den folgenden Befehl aus, um das Image zu erstellen und mit der URL Ihrer privaten Registrierung zu kennzeichnen. Ersetzen Sie <acrName> wieder durch den Namen Ihrer Registrierung:
docker build . -f ./AcrHelloworld/Dockerfile -t <acrName>.azurecr.io/acr-helloworld:v1
Beim Erstellen des Docker-Image werden mehrere Ausgabezeilen angezeigt (hier gekürzt angegeben):
Sending build context to Docker daemon 523.8kB
Step 1/18 : FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
2.2: Pulling from mcr.microsoft.com/dotnet/core/aspnet
3e17c6eae66c: Pulling fs layer
[...]
Step 18/18 : ENTRYPOINT dotnet AcrHelloworld.dll
---> Running in 6906d98c47a1
---> c9ca1763cfb1
Removing intermediate container 6906d98c47a1
Successfully built c9ca1763cfb1
Successfully tagged uniqueregistryname.azurecr.io/acr-helloworld:v1
Verwenden Sie docker images, um das erstellte und markierte Image anzuzeigen:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
uniqueregistryname.azurecr.io/acr-helloworld v1 01ac48d5c8cf About a minute ago 284MB
[...]
Übertragen des Images zu Azure Container Registry mithilfe von Push
Verwenden Sie als Nächstes den Befehl docker push, um das Image acr-helloworld an Ihre Registrierung zu pushen. Ersetzen Sie <acrName> durch den Namen Ihrer Registrierung.
docker push <acrName>.azurecr.io/acr-helloworld:v1
Da Sie Ihre Registrierung für die Georeplikation konfiguriert haben, wird Ihr Image mit diesem einzelnen docker push-Befehl automatisch sowohl in der Region USA, Westen als auch in USA, Osten repliziert.
$ docker push uniqueregistryname.azurecr.io/acr-helloworld:v1
The push refers to a repository [uniqueregistryname.azurecr.io/acr-helloworld]
cd54739c444b: Pushed
d6803756744a: Pushed
b7b1f3a15779: Pushed
a89567dff12d: Pushed
59c7b561ff56: Pushed
9a2f9413d9e4: Pushed
a75caa09eb1f: Pushed
v1: digest: sha256:0799014f91384bda5b87591170b1242bcd719f07a03d1f9a1ddbae72b3543970 size: 1792
Nächste Schritte
In diesem Tutorial haben Sie eine private, georeplizierte Containerregistrierung und ein Containerimage erstellt und dieses Image anschließend per Pushvorgang in Ihre Registrierung übertragen.
Im nächsten Tutorial erfahren Sie, wie Sie Ihren Container in mehreren Instanzen vom Typ „Web-App für Container“ bereitstellen, indem Sie die Georeplikation für die lokale Bereitstellung der Images verwenden.