Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du kör ett befintligt .NET Framework-baserat program i en Windows-container krävs inga ändringar i din app. Om du vill köra din app i en Windows-container skapar du en Docker-avbildning som innehåller din app och startar containern. I det här avsnittet beskrivs hur du tar ett befintligt ASP.NET MVC-program och distribuerar det i en Windows-container.
Du börjar med en befintlig ASP.NET MVC-app och skapar sedan de publicerade tillgångarna med hjälp av Visual Studio. Du använder Docker för att skapa bilden som innehåller och kör din app. Du bläddrar till webbplatsen som körs i en Windows-container och kontrollerar att appen fungerar.
Den här artikeln förutsätter en grundläggande förståelse av Docker. Du kan lära dig mer om Docker genom att läsa Docker-översikten.
Appen som du kör i en container är en enkel webbplats som besvarar frågor slumpmässigt. Den här appen är ett grundläggande MVC-program utan autentisering eller databaslagring. Du kan fokusera på att flytta webbnivån till en container. Framtida avsnitt visar hur du flyttar och hanterar beständig lagring i containerbaserade program.
När du flyttar ditt program ingår följande steg:
- Skapa en publiceringsuppgift för att bygga resurserna för en avbildning.
- Skapa en Docker-avbildning som ska köra ditt program.
- Starta en Docker-container som kör din avbildning.
- Verifiera programmet med hjälp av webbläsaren.
Det färdiga programmet finns på GitHub.
Förutsättningar
Utvecklingsdatorn måste ha följande programvara:
- Windows 10 Anniversary Update (eller senare) eller Windows Server 2016 (eller senare)
- Docker för Windows – version Stable 1.13.0 eller 1.12 Beta 26 (eller nyare versioner)
- Visual Studio 2017
Viktigt!
Om du använder Windows Server 2016 följer du anvisningarna för Implementering av containervärd – Windows Server.
När du har installerat och startat Docker högerklickar du på brickikonen och väljer Växla till Windows-containrar. Detta krävs för att köra Docker-avbildningar baserade på Windows. Det tar några sekunder att köra det här kommandot:
Publicera skript
Samla in alla resurser som du behöver ladda in i en Docker-avbildning på ett ställe. Du kan använda kommandot Visual Studio Publish för att skapa en publiceringsprofil för din app. Den här profilen placerar alla resurser i ett katalogträd som du kopierar till målbilden senare i den här guiden.
Publiceringssteg
- Högerklicka på webbprojektet i Visual Studio och välj Publicera.
- Klicka på knappen Anpassad profil och välj sedan Filsystem som metod.
- Välj katalogen. Enligt konvention använder det nedladdade exemplet
bin\Release\PublishOutput.
Öppna avsnittet Filpubliceringsalternativ på fliken Inställningar . Välj Förkompilera under publicering. Den här optimeringen innebär att du kommer att kompilera vyer i Docker-containern, du kopierar de förkompilerade vyerna.
Klicka på Publicera så kopierar Visual Studio alla nödvändiga tillgångar till målmappen.
Skapa avbildningen
Skapa en ny fil med namnet Dockerfile för att definiera docker-avbildningen.
Dockerfile innehåller instruktioner för att skapa den slutliga avbildningen och innehåller eventuella basavbildningsnamn, nödvändiga komponenter, den app som du vill köra och andra konfigurationsavbildningar.
Dockerfile är indata till kommandot docker build som skapar avbildningen.
I den här övningen skapar du en avbildning baserat på avbildningen microsoft/aspnet som finns på Docker Hub.
Basavbildningen, mcr.microsoft.com/dotnet/framework/aspnet:4.8, är en Windows Server-avbildning. Den innehåller Windows Server Core, IIS och ASP.NET 4.8. När du kör den här avbildningen i containern startar den automatiskt IIS och installerade webbplatser.
Den Dockerfile som skapar avbildningen ser ut så här:
# The `FROM` instruction specifies the base image. You are
# extending the `mcr.microsoft.com/dotnet/framework/aspnet:4.8` image.
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
# The final instruction copies the site you published earlier into the container.
COPY ./bin/Release/PublishOutput/ /inetpub/wwwroot
Det finns inget ENTRYPOINT kommando i den här Dockerfile. Du behöver ingen. När du kör Windows Server med IIS är IIS-processen ingångspunkten, som är konfigurerad för att starta i ASP.NET-basavbildningen.
Kör Docker Build-kommandot för att skapa avbildningen som kör din ASP.NET app. Om du vill göra detta öppnar du ett PowerShell-fönster i katalogen för projektet och skriver följande kommando i lösningskatalogen:
docker build -t mvcrandomanswers .
Det här kommandot skapar den nya avbildningen med hjälp av anvisningarna i Dockerfile och namnger (-t taggning) avbildningen som mvcrandomanswers. Detta kan inkludera att hämta basavbildningen från Docker Hub och sedan lägga till din app i avbildningen.
När kommandot har slutförts kan du köra docker images kommandot för att se information om den nya avbildningen:
REPOSITORY TAG IMAGE ID CREATED SIZE
mvcrandomanswers latest 86838648aab6 2 minutes ago 10.1 GB
IMAGE-ID:t kommer att vara annorlunda på din dator. Nu ska vi köra appen.
Starta en container
Starta en container genom att köra följande docker run kommando:
docker run -d --name randomanswers mvcrandomanswers
Argumentet -d instruerar Docker att starta avbildningen i frånkopplat läge. Det innebär att Docker-avbildningen körs frånkopplad från den aktuella kommandoraden.
I många docker-exempel kan du se -p mappa containern och värdportarna. Standardavbildningen för aspnet har redan konfigurerat containern för att lyssna på och exponera port 80.
--name randomanswers Ger ett namn till den container som körs. Du kan använda det här namnet i stället för container-ID i de flesta kommandon.
mvcrandomanswers är namnet på bilden som ska startas.
Verifiera i webbläsaren
När containern startar ansluter du till den container som körs med hjälp av http://localhost i exemplet som visas. Skriv in webbadressen i webbläsaren så bör du se den webbplats som körs.
Anmärkning
Vissa VPN- eller proxyprogram kan hindra dig från att navigera till din webbplats. Du kan tillfälligt inaktivera den för att se till att containern fungerar.
Exempelkatalogen på GitHub innehåller ett PowerShell-skript som kör dessa kommandon åt dig. Öppna ett PowerShell-fönster, ändra katalogen till din lösningskatalog och skriv:
./run.ps1
Kommandot ovan skapar avbildningen, visar listan över avbildningar på datorn och startar en container.
Om du vill stoppa containern utfärdar du ett docker stop kommando:
docker stop randomanswers
Om du vill ta bort containern utfärdar du ett docker rm kommando:
docker rm randomanswers