Ausführen eines benutzerdefinierten Containers in Azure

Azure App Service stellt vordefinierte Anwendungsstapel unter Windows wie ASP.NET oder Node.js bereit (ausgeführt unter IIS). Die vorkonfigurierten Anwendungsstapel sperren jedoch das Betriebssystem und verhindern den Zugriff auf niedriger Ebene. Für benutzerdefinierte Windows-Container gelten diese Einschränkungen nicht, und Entwickler können die Container vollständig anpassen und Containeranwendungen Vollzugriff auf Windows-Funktionen erteilen.

In dieser Schnellstartanleitung erfahren Sie, wie Sie über Visual Studio in Azure Container Registry eine ASP.NET-App (in einem Windows-Image) bereitstellen. Die App wird in einem benutzerdefinierten Container in Azure App Service ausgeführt.

Voraussetzungen

Zum Abschließen dieses Tutorials benötigen Sie Folgendes:

  • Installieren Sie Docker für Windows.
  • Wechseln Sie Docker, um Windows-Container auszuführen.
  • Installieren Sie Visual Studio 2022 mit den Workloads ASP.NET und Webentwicklung und Azure-Entwicklung. Vergewissern Sie sich in Visual Studio 2022 Community, dass die Komponente .NET Framework project and item templates (Projekt- und Elementvorlagen für .NET Framework) mit der Workload ASP.NET und Webentwicklung aktiviert ist. Sie haben Visual Studio 2022 bereits installiert:
    • Installieren Sie in Visual Studio die neuesten Updates, indem Sie Hilfe>Nach Updates suchen auswählen.
    • Fügen Sie in Visual Studio die Workloads hinzu, indem Sie Tools>Tools und Features abrufen auswählen.

Erstellen einer ASP.NET-Web-App

Führen Sie zum Erstellen einer ASP.NET-Web-App die folgenden Schritte aus:

  1. Öffnen Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus.

  2. Suchen Sie unter Neues Projekt erstellen die Option ASP.NET-Webanwendung (.NET Framework) für C#, und wählen Sie sie aus. Wählen Sie anschließend Weiter aus.

    Create a new project

  3. Geben Sie unter Neues Projekt konfigurieren unter Projektname den Namen myfirstazurewebapp für die Anwendung ein. Wählen Sie unter Framework die Option .NET Framework 4.8 und dann Erstellen aus.

    Configure your web app project

  4. Sie können jede Art von ASP.NET Web-App für Azure bereitstellen. Wählen Sie für diese Schnellstartanleitung die Vorlage MVC aus.

  5. Wählen Sie unter Authentifizierung die Option Keine aus. Wählen Sie unter Erweitert die Option Docker-Unterstützung aus, und deaktivieren Sie die Option Für HTTPS konfigurieren. Klicken Sie auf Erstellen.

    Create ASP.NET Web Application

  6. Wenn die Dockerfile-Datei nicht automatisch geöffnet wird, öffnen Sie sie im Projektmappen-Explorer.

  7. Sie benötigen ein unterstütztes übergeordnetes Image. Ändern Sie das übergeordnete Image, indem Sie die Zeile FROM durch den folgenden Code ersetzen und die Datei dann speichern:

    FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    
  8. Wählen Sie im Visual Studio-Menü Debuggen>Starten ohne Debugging aus, um die Web-App lokal auszuführen.

    Run app locally

Veröffentlichen in der Azure Container Registry

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt myfirstazurewebapp, und wählen Sie Veröffentlichen aus.

  2. Wählen Sie unter Ziel die Option Docker-Containerregistrierung aus, und wählen Sie anschließend Weiter aus.

    Select Docker Container Registry

  3. Wählen Sie unter Bestimmtes Ziel die Option Azure Container Registry aus, und klicken Sie anschließend auf Weiter.

    Publish from project overview page

  4. Vergewissern Sie sich unter Veröffentlichen, dass das richtige Abonnement ausgewählt ist. Wählen Sie unter Containerregistrierungen die Schaltfläche + aus, um eine neue Azure Container Registry-Instanz zu erstellen.

    Create new Azure Container Registry

  5. Vergewissern Sie sich unter Neu erstellen, dass das richtige Abonnement ausgewählt ist. Wählen Sie unter Ressourcengruppe die Option Neu aus, geben Sie myResourceGroup als Namen ein, und klicken Sie auf OK. Wählen Sie unter SKU die Option Basic aus. Wählen Sie unter Registrierungsspeicherort einen Speicherort für die Registrierung und anschließend Erstellen aus.

    Azure Container Registry details

  6. Wählen Sie in Veröffentlichen unter Containerregistrierung die von Ihnen erstellte Registrierung und anschließend Fertig stellen aus.

    Select existing Azure Container Registry

    Warten Sie, bis die Bereitstellung abgeschlossen ist. Auf der Seite Veröffentlichen wird jetzt der Name des Repositorys angezeigt. Wählen Sie die Schaltfläche Kopieren aus, um den Repositorynamen zur späteren Verwendung zu kopieren.

    Screenshot that highlights the repository name.

Erstellen eines benutzerdefinierten Windows-Containers

  1. Melden Sie sich beim Azure-Portal an.

  2. Klicken Sie im Azure-Portal links oben auf Ressource erstellen.

  3. Wählen Sie unter Beliebte Dienste unter Web-App die Option Erstellen aus.

  4. Wählen Sie auf der Seite Web-App erstellen Ihr Abonnement und eine Ressourcengruppe aus. Bei Bedarf kann eine neue Ressourcengruppe erstellt werden.

  5. Geben Sie einen App-Namen an, z. B. win-container-demo. Wählen Sie für Veröffentlichen die Option Docker-Container und für Betriebssystem die Option Windows aus. Klicken Sie auf Weiter: Docker aus, um den Vorgang fortzusetzen.

    Create a Web App for Containers

  6. Wählen Sie unter Imagequelle die Option Docker Hub aus, und geben Sie unter Image und Tag den Repositorynamen ein, den Sie im Schritt Veröffentlichen in der Azure Container Registry kopiert haben.

    Configure your a Web App for Containers

    Wenn Sie an anderer Stelle, etwa in Azure Container Registry oder einem anderen privaten Repository, ein benutzerdefiniertes Image für Ihre Webanwendung besitzen, können Sie es hier konfigurieren. Wählen Sie zum Fortfahren Überprüfen + erstellen aus.

  7. Überprüfen Sie alle Details, wählen Sie dann Erstellen aus, und warten Sie, bis Azure die erforderlichen Ressourcen erstellt hat. Create your a Web App for Containers

Navigieren zum benutzerdefinierten Container

Wenn der Azure-Vorgang abgeschlossen ist, wird ein Benachrichtigungsfeld angezeigt.

Deployment succeeded

  1. Klicken Sie auf Zu Ressource wechseln.

  2. Folgen Sie in der Übersicht dieser Ressource dem Link neben URL.

Daraufhin wird eine neue Browserseite geöffnet:

Windows custom container starting

Warten Sie einige Minuten, und wiederholen Sie den Vorgang, bis die ASP.NET-Standardhomepage angezeigt wird:

Windows custom container running

Herzlichen Glückwunsch! Sie führen Ihren ersten benutzerdefinierten Windows-Container in Azure App Service aus.

Anzeigen der Startprotokolle des Containers

Das Laden des Windows-Containers kann eine Weile dauern. Wenn Sie den Status anzeigen möchten, navigieren Sie zur folgenden URL. Ersetzen Sie dabei <app_name> durch den Namen Ihrer App.

https://<app_name>.scm.azurewebsites.net/api/logstream

Die gestreamten Protokolle sehen wie folgt aus:

2018-07-27T12:03:11  Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully

Lokales Aktualisieren und erneutes Bereitstellen

  1. Öffnen Sie in Visual Studio im Projektmappen-Explorer unter Ihrem Projekt Ansichten>Start>Index.cshtml.

  2. Suchen Sie im oberen Bereich nach dem HTML-Tag <div class="jumbotron">, und ersetzen Sie das gesamte Element durch folgenden Code:

    <div class="jumbotron">
        <h1>ASP.NET in Azure!</h1>
        <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p>
    </div>
    
  3. Klicken Sie zum erneuten Bereitstellen in Azure im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt myfirstazurewebapp, und wählen Sie Veröffentlichen aus.

  4. Wählen Sie auf der Seite „Veröffentlichen“ die Option Veröffentlichen aus, und warten Sie, bis die Veröffentlichung abgeschlossen ist.

  5. Damit App Service das neue Image von Docker Hub abruft, starten Sie die App neu. Klicken Sie auf der App-Seite im Portal auf Neu starten>Ja.

    Restart web app in Azure

Navigieren Sie erneut zum benutzerdefinierten Container. Wenn Sie die Webseite aktualisieren, sollte die App zunächst zurück zur Seite „Starting up“ (Starten) wechseln und dann nach einigen Minuten wieder die aktualisierte Webseite anzeigen.

Updated web app in Azure

Nächste Schritte

Oder sehen Sie sich weitere Ressourcen an:

Bei App Service für Linux werden vordefinierte Anwendungsstapel unter Linux mit Unterstützung für verschiedene Sprachen bereitgestellt, z. B. .NET, PHP, Node.js und andere. Sie können auch ein benutzerdefiniertes Docker-Image verwenden, um Ihre Web-App in einem Anwendungsstapel auszuführen, der nicht bereits in Azure definiert ist. In dieser Schnellstartanleitung erfahren Sie, wie Sie ein Image aus einer Azure Container Registry-Instanz (ACR) in App Service bereitstellen.

Voraussetzungen

Erstellen einer Containerregistrierung

In diesem Schnellstart wird Azure Container Registry als Registrierung ausgewählt. Sie können auch andere Registrierungen verwenden, aber die Schritte können sich dann geringfügig unterscheiden.

Verwenden Sie für das Erstellen einer Containerregistrierung die Anweisungen unter Schnellstart: Erstellen einer privaten Containerregistrierung im Azure-Portal.

Wichtig

Stellen Sie sicher, dass Sie beim Erstellen der Containerregistrierung in Azure die Option Administratorbenutzer auf Aktivieren festlegen. Sie können die Option auch im Azure-Portal im Abschnitt Zugriffsschlüssel Ihrer Registrierungsseite festlegen. Diese Einstellung ist für den App Service-Zugriff erforderlich. Informationen zur verwalteten Identität finden Sie unter Konfigurieren von App Service für die Bereitstellung des Images über die Registrierung.

Anmelden

  1. Starten Sie Visual Studio Code.

  2. Wählen Sie das Azure-Logo auf der Aktivitätsleiste aus, navigieren Sie zum APP SERVICE-Explorer, wählen Sie dann Bei Azure anmelden aus, und folgen Sie den Anweisungen.

    sign in to Azure

  3. Überprüfen Sie unten auf der Statusleiste, die E-Mail-Adresse Ihres Azure-Kontos. Im APP SERVICE-Explorer sollte Ihr Abonnement angezeigt werden.

  4. Wählen Sie auf der Aktivitätsleiste das Docker-Logo aus. Überprüfen Sie im REGISTRIERUNGS-Explorer, ob die von Ihnen erstellte Containerregistrierung angezeigt wird.

    Screenshot shows the Registries value with Azure expanded.

Überprüfen der Voraussetzungen

Überprüfen Sie, ob Docker installiert ist und ausgeführt wird. Wenn Docker ausgeführt wird, zeigt der folgende Befehl die Version an.

docker --version

Erstellen und Kompilieren eines Images

  1. Öffnen Sie in Visual Studio Code einen leeren Ordner, und fügen Sie eine Datei mit dem Namen Dockerfile hinzu. Fügen Sie im Dockerfile den Inhalt basierend auf Ihrem gewünschten Sprachframework ein:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts

ENV PORT 8080
EXPOSE 8080

ENV ASPNETCORE_URLS "http://*:${PORT}"

ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]

In diesem Dockerfile ist das übergeordnete Image einer der integrierten .NET-Container von App Service. Sie finden die zugehörigen Quelldateien im GitHub-Repository „Azure-App-Service/ImageBuilder“ unter „GenerateDockerFiles/dotnetcore“. Das Dockerfile kopiert eine einfache .NET-App in /defaulthome/hostingstart. Ihr Dockerfile startet einfach nur diese App.

  1. Öffnen Sie die Befehlspalette, und geben Sie Docker Images: Build Image ein. Drücken Sie die EINGABETASTE, um den Befehl auszuführen.

  2. Geben Sie im Feld „Imagetag“ das gewünschte Tag im Format <acr-name>.azurecr.io/<image-name>/<tag> an. Dabei ist <acr-name> der Name der von Ihnen erstellten Containerregistrierung. Drücken Sie die EINGABETASTE.

  3. Klicken Sie nach Abschluss der Imageerstellung oben im IMAGES-Explorer auf Aktualisieren und überprüfen Sie, ob das Image erfolgreich erstellt wurde.

    Screenshot shows the built image with tag.

Bereitstellen der Containerregistrierung

  1. Klicken Sie auf der Aktivitätsleiste auf das Symbol Docker. Suchen Sie im IMAGES-Explorer nach dem Image, das Sie erstellt haben.

  2. Erweitern Sie das Image, klicken Sie mit der rechten Maustaste auf das gewünschte Tag, und klicken Sie auf Pushen.

  3. Achten Sie darauf, dass das Imagetag mit <acr-name>.azurecr.io beginnt, und drücken Sie die EINGABETASTE.

  4. Wenn Visual Studio Code das Pushen des Images in Ihre Containerregistrierung abgeschlossen hat, klicken Sie oben im REGISTRIERUNGS-Explorer auf Aktualisieren und vergewissern Sie sich, dass das Image erfolgreich gepusht wurde.

    Screenshot shows the image deployed to Azure container registry.

Bereitstellen in App Service

  1. Erweitern Sie das Image im REGISTRIERUNGS-Explorer, klicken Sie mit der rechten Maustaste auf das Tag, und klicken Sie dann auf Deploy image to Azure App Service (Image in Azure App Service bereitstellen).
  2. Befolgen Sie die Aufforderungen, um ein Abonnement, einen global eindeutigen App-Namen, eine Ressourcengruppe und einen App Service-Plan auszuwählen. Wählen Sie als Tarif B1 Basic sowie eine Region in Ihrer Nähe aus.

Nach der Bereitstellung ist Ihre App unter http://<app-name>.azurewebsites.net verfügbar.

Eine Ressourcengruppe ist eine benannte Sammlung aller Ressourcen Ihrer Anwendung in Azure. Eine Ressourcengruppe kann z. B. einen Verweis auf eine Website, eine Datenbank und eine Azure-Funktion enthalten.

Ein App Service-Plan definiert die physischen Ressourcen, die zum Hosten Ihrer Website verwendet werden. In diesem Schnellstart wird ein Hostingplan vom Typ Basic für die Linux-Infrastruktur verwendet. Dies bedeutet, dass die Website neben anderen Websites auf einem Linux-Computer gehostet wird. Wenn Sie mit dem Basic-Plan beginnen, können Sie das Azure-Portal zum zentralen Hochskalieren verwenden, sodass Ihre die einzige Website ist, die auf einem Computer ausgeführt wird. Eine Beschreibung der Preise finden Sie unter App Service – Preise.

Navigieren auf der Website

Im Bereich Ausgabe wird der Status der Bereitstellungsvorgänge angezeigt. Klicken Sie nach Abschluss des Vorgangs in der Popupbenachrichtigung auf Website öffnen, um die Website in Ihrem Browser zu öffnen.

Nächste Schritte

Herzlichen Glückwunsch! Sie haben diesen Schnellstart erfolgreich abgeschlossen.

Die App Service-App führt bei jedem Start einen Pull aus der Containerregistrierung aus. Wenn Sie Ihr Image neu erstellen, müssen Sie es nur in Ihre Containerregistrierung pushen. Die App pullt dann das aktualisierte Image, wenn es neu gestartet wird. Wenn Ihre App das aktualisierte Image sofort pullen soll, starten Sie sie neu.

Weitere Azure-Erweiterungen: