Köra en anpassad container i Azure
Azure App Service har fördefinierade programstackar i Windows som ASP.NET eller Node.js, som körs i IIS. De förkonfigurerade programstackarna låser dock operativsystemet och förhindrar åtkomst på låg nivå. Anpassade Windows-containrar har inte dessa begränsningar och gör det möjligt för utvecklare att anpassa containrarna fullständigt och ge containerprogram fullständig åtkomst till Windows funktioner.
Den här snabbstarten visar hur du distribuerar en ASP.NET-app i en Windows-avbildning för att Azure Container Registry från Visual Studio. Du kör appen i en anpassad container i Azure App Service.
Förutsättningar
För att slutföra den här kursen behöver du:
- Installera Docker för Windows.
- Växla Docker för att köra Windows-containrar.
- Installera Visual Studio 2022 med arbetsbelastningarna ASP.NET webbutveckling och Azure-utveckling. I Visual Studio 2022 Community .NET Framework projekt- och objektmallar med arbetsbelastningen ASP.NET och webbutveckling. Om du redan har installerat Visual Studio 2022:
- Installera de senaste uppdateringarna i Visual Studio genom att välja Hjälp sök efter > uppdateringar.
- Lägg till arbetsbelastningar i Visual Studio genom att välja Verktyg Hämta verktyg > och funktioner.
Skapa en ASP.NET-webbapp
Skapa en ASP.NET webbapp genom att följa dessa steg:
Öppna Visual Studio och välj sedan Skapa ett nytt projekt.
I Skapa ett nytt projekt söker du upp och ASP.NET ett webbprogram (.NET Framework) för C# och väljer sedan Nästa.
I Konfigurera det nya projektet går du Project namnet och ger programmet namnet myfirstazurewebapp. Under Ramverk väljer du .NET Framework 4.8 och sedan Skapa.
Du kan distribuera alla typer av ASP.NET-webbappar till Azure. För den här snabbstarten väljer du MVC-mallen.
Under Autentisering väljer du Ingen. Under Avancerat väljer du Docker-stöd och avmarkerar Konfigurera för HTTPS. Välj Skapa.
Om filen Dockerfile inte öppnas automatiskt öppnar du den från Solution Explorer.
Du behöver en överordnad avbildning som stöds. Ändra den överordnade avbildningen genom att ersätta raden
FROMmed följande kod och spara filen:FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019På Visual Studio väljer du Felsök > Starta utan felsökning för att köra webbappen lokalt.
Publicera till Azure Container Registry
I Solution Explorer högerklickar du på projektet myfirstazurewebapp och väljer Publicera.
I Mål väljer du Docker Container Registry och klickar sedan på Nästa.
I Specifikt mål väljer du Azure Container Registry och klickar sedan på Nästa.
I Publicera kontrollerar du att rätt prenumeration har valts. I Containerregister väljer du knappen för att skapa en ny + Azure Container Registry.
I Skapa ny kontrollerar du att rätt prenumeration har valts. Under Resursgrupp väljer du Ny och skriver myResourceGroup som namn och klickar på OK. Under SKU väljer du Grundläggande. Under Registerplats väljer du en plats för registret och sedan Skapa.
Under Publicera under Container Registry du det register som du skapade och väljer sedan Slutför.
Vänta tills distributionen har slutförts. På sidan Publicera visas nu namnet på lagringsplatsen. Välj kopieringsknappen för att kopiera lagringsplatsens namn för senare.
Skapa en Windows-containerapp
Logga in på Azure-portalen.
Välj Skapa en resurs längst upp till vänster i Azure Portal.
Under Populära tjänster väljer du Skapa under Webbapp.
I Skapa webbapp väljer du din prenumeration och en resursgrupp. Du kan skapa en ny resursgrupp om det behövs.
Ange ett appnamn, till exempel win-container-demo. Välj Docker-container för Publicera Windows för Operativsystem. Välj Nästa: Docker för att fortsätta.

För Bildkälla väljer du Docker Hub och för Bild och tagg anger du lagringsplatsens namn som du kopieradei Publicera till Azure Container Registry .

Om du har en anpassad avbildning någon annanstans för ditt webbprogram, till exempel i Azure Container Registry eller på en annan privat lagringsplats, kan du konfigurera den här.
Välj Granska och skapa och sedan Skapa och vänta tills Azure har skapat de nödvändiga resurserna.
Bläddra till containerappen
När Azure-åtgärden är klar visas ett meddelande.

Klicka på Gå till resurs.
I översikten över den här resursen följer du länken bredvid URL:en.
En ny webbläsarsida öppnas på följande sida:

Vänta några minuter och försök igen, tills du kommer till standardvälkomstsidan för ASP.NET:

Grattis! Du kör din första anpassade Windows-container i Azure App Service.
Se containerns startloggar
Det kan ta lite tid för Windows-containern att läsas in. Om du vill se förloppet går du till följande URL genom <app_name> att ersätta med namnet på din app.
https://<app_name>.scm.azurewebsites.net/api/logstream
De strömmade loggarna ser ut så här:
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
Uppdatera lokalt och omdistribuera
I Visual Studio öppnar du Views Home > > Index.cshtml i Solution Explorer.
Leta reda på HTML-taggen
<div class="jumbotron">längst upp på sidan och ersätt hela elementet med följande kod:<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>Om du vill distribuera om till Azure högerklickar du på projektet myfirstazurewebapp i Solution Explorer väljer Publicera.
På publiceringssidan väljer du Publicera och väntar tills publiceringen ska slutföras.
Om du vill uppmana App Service att hämta den nya avbildningen från Docker Hub startar du om appen. På appsidan i portalen klickar du på Starta om > Ja.

Bläddra till container igen. När du uppdaterar webbsidan ska appen återgå till sidan ”Startar” först och sedan visa den uppdaterade igen efter några minuter.

Nästa steg
Eller så kan du kolla in andra resurser:
App Service på Linux tillhandahåller fördefinierade programstackar i Linux med stöd för språk som .NET, PHP, Node.js och andra. Du kan också använda en anpassad Docker-avbildning för att köra din webbapp på en programstack som inte redan har definierats i Azure. Den här snabbstarten visar hur du distribuerar en avbildning från en Azure Container Registry (ACR) till App Service.
Förutsättningar
- Ett Azure-konto
- Docker
- Visual Studio Code
- Tillägget Azure App Service för VS Code. Du kan använda det här tillägget för att skapa, hantera och distribuera Linux Web Apps på Azure Platform as a Service (PaaS).
- Docker-tillägget för VS Code. Du kan använda det här tillägget för att förenkla hanteringen av lokala Docker-avbildningar och kommandon samt för att distribuera skapade appavbildningar till Azure.
Skapa ett containerregister
Den här snabbstarten Azure Container Registry som val av register. Du kan använda andra register, men stegen kan skilja sig något.
Skapa ett containerregister genom att följa anvisningarna i Snabbstart: Skapa ett privat containerregister med hjälp av Azure Portal.
Viktigt
Se till att ange alternativet Administratörsanvändare till Aktivera när du skapar Azure-containerregistret. Du kan också ange den från avsnittet Åtkomstnycklar på registersidan i Azure Portal. Den här inställningen krävs för App Service åtkomst. Information om hanterade identiteter finns i Självstudie om att distribuera från ACR.
Logga in
Starta Visual Studio Code.
Välj Azure-logotypen i aktivitetsfältet,navigera till APP SERVICE Explorer och välj sedan Logga in på Azure och följ instruktionerna.

I statusfältet längst ned kontrollerar du e-postadressen för ditt Azure-konto. Din prenumeration bör visas i APP SERVICE Explorer.
I aktivitetsfältet väljer du Docker-logotypen. I REGISTRIES-utforskaren kontrollerar du att containerregistret som du skapade visas.

Kontrollera krav
Kontrollera att du har Docker installerat och igång. Följande kommando visar Docker-versionen om den körs.
docker --version
Skapa och skapa avbildning
- I Visual Studio Code öppnar du en tom mapp och lägger till en fil med namnet
Dockerfile. I Dockerfile klistrar du in innehållet baserat på önskat språkramverk:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts
ENV PORT 8080
EXPOSE 8080
ENV ASPNETCORE_URLS "http://*:${PORT}"
ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]
I den här Dockerfile är den överordnade avbildningen en av de inbyggda .NET-containrarna i App Service. Källfilerna för den finns på lagringsplatsen Azure-App-Service/ImageBuilder GitHub under GenerateDockerFiles/dotnetcore. Dess Dockerfile kopierar en enkel .NET-app till /defaulthome/hostingstart . Din Dockerfile startar helt enkelt appen.
Öppna kommandopalettenoch skriv Docker Images: Build Image. Skriv Retur för att köra kommandot.
I rutan avbildningstagg anger du den tagg som du vill använda i följande format: , där är namnet
<acr-name>.azurecr.io/<image-name>/<tag><acr-name>på det containerregister som du skapade. Tryck på Retur.När avbildningen har skapats klickar du på Uppdatera överst i IMAGES-utforskaren och kontrollerar att avbildningen har skapats.

Distribuera till containerregister
Klicka på Docker-ikonen i aktivitetsfältet. I IMAGES-utforskaren hittar du den avbildning som du nyss skapade.
Expandera bilden, högerklicka på den tagg som du vill använda och klicka på Push (Pusha).
Kontrollera att bildtaggen börjar med
<acr-name>.azurecr.iooch tryck på Retur.När Visual Studio Code har push-skickats avbildningen till containerregistret klickar du på Uppdatera överst i registerutforskaren och kontrollerar att avbildningen har push-skickats.

Distribuera till App Service
- I REGISTRIES Explorer expanderar du avbildningen, högerklickar på taggen och klickar på Deploy image to Azure App Service.
- Följ anvisningarna för att välja en prenumeration, ett globalt unikt appnamn, en resursgrupp och en App Service plan. Välj B1 Basic som prisnivå och en region nära dig.
Efter distributionen är din app tillgänglig på http://<app-name>.azurewebsites.net .
En resursgrupp är en namngiven samling med alla programresurser i Azure. En resursgrupp kan till exempel innehålla en referens till en webbplats, en databas och en Azure-funktion.
En App Service plan definierar de fysiska resurser som ska användas som värd för din webbplats. Den här snabbstarten använder en grundläggande värdplan för Linux-infrastruktur, vilket innebär att webbplatsen kommer att finnas på en Linux-dator tillsammans med andra webbplatser. Om du börjar med Basic-planen kan du använda Azure Portal för att skala upp så att din är den enda webbplatsen som körs på en dator. Prisinformation finns i App Service priser.
Bläddra på webbplatsen
Panelen Utdata visar status för distributionsåtgärder. När åtgärden har slutförts klickar du på Öppna webbplats i popup-meddelandet för att öppna webbplatsen i webbläsaren.
Nästa steg
Grattis, du har slutfört den här snabbstarten.
Appen App Service hämtar från containerregistret varje gång den startas. Om du återskapar avbildningen behöver du bara push-skicka den till containerregistret, så hämtar appen den uppdaterade avbildningen när den startas om. Om du vill be din app att hämta den uppdaterade avbildningen direkt startar du om den.
Andra Azure-tillägg:
- Cosmos DB
- Azure Functions
- Azure CLI-verktyg
- Azure Resource Manager-verktyg
- Azure Tools-tilläggspaketet innehåller alla tillägg ovan.