Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het uitvoeren van een bestaande .NET Framework-toepassing in een Windows-container vereist geen wijzigingen in uw app. Als u uw app wilt uitvoeren in een Windows-container, maakt u een Docker-installatiekopie die uw app bevat en start u de container. In dit onderwerp wordt uitgelegd hoe u een bestaande ASP.NET MVC-toepassing gebruikt en implementeert in een Windows-container.
U begint met een bestaande ASP.NET MVC-app en bouwt vervolgens de gepubliceerde assets met Visual Studio. U gebruikt Docker om de image te maken die uw app bevat en draait. Je bladert naar de site die draait in een Windows-container en controleert of de app werkt.
In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Docker. U vindt meer informatie over Docker door het Docker-overzicht te lezen.
De app die u in een container uitvoert, is een eenvoudige website die willekeurig vragen beantwoordt. Deze app is een eenvoudige MVC-toepassing zonder verificatie of databaseopslag; Hiermee kunt u zich richten op het verplaatsen van de weblaag naar een container. Toekomstige onderwerpen laten zien hoe u permanente opslag verplaatst en beheert in containertoepassingen.
Het verplaatsen van uw toepassing omvat de volgende stappen:
- Een publicatietaak maken om de assets voor een afbeelding te bouwen.
- Een Docker-image bouwen dat uw toepassing uitvoert.
- Een Docker-container starten die uw afbeelding uitvoert.
- De toepassing verifiëren met behulp van uw browser.
De voltooide toepassing bevindt zich op GitHub.
Vereiste voorwaarden
De ontwikkelcomputer moet over de volgende software beschikken:
- Windows 10 Jubileumupdate (of hoger) of Windows Server 2016 (of hoger)
- Docker voor Windows - versie Stable 1.13.0 of 1.12 Beta 26 (of nieuwere versies)
- Visual Studio 2017
Belangrijk
Als u Windows Server 2016 gebruikt, volgt u de instructies voor containerhostimplementatie - Windows Server.
Nadat u Docker hebt geïnstalleerd en gestart, klikt u met de rechtermuisknop op het pictogram van het systeemvak en selecteert u Overschakelen naar Windows-containers. Dit is vereist om Docker-installatiekopieën uit te voeren op basis van Windows. Het uitvoeren van deze opdracht duurt enkele seconden:
Script publiceren
Verzamel alle assets die u in een Docker-image wilt plaatsen op één plek. U kunt de opdracht Publiceren in Visual Studio gebruiken om een publicatieprofiel voor uw app te maken. Met dit profiel worden alle assets in één mapstructuur geplaatst die u later in deze tutorial naar uw doelimage kopieert.
Stappen voor publiceren
- Klik met de rechtermuisknop op het webproject in Visual Studio en selecteer Publiceren.
- Klik op de knop Aangepast profiel, en selecteer daarna Bestandssysteem als methode.
- Kies de map. Het gedownloade voorbeeld maakt standaard gebruik van
bin\Release\PublishOutput.
Open de sectie Opties voor het publiceren van bestanden op het tabblad Instellingen . Selecteer Precompile tijdens het publiceren. Deze optimalisatie betekent dat u weergaven gaat compileren in de Docker-container. U kopieert de vooraf gecompileerde weergaven.
Klik op Publiceren en Visual Studio kopieert alle benodigde assets naar de doelmap.
De image bouwen
Maak een nieuw bestand met de naam Dockerfile om uw Docker-installatiekopieën te definiëren.
Dockerfile bevat instructies voor het bouwen van de uiteindelijke installatiekopieën en bevat namen van basisinstallatiekopieën, vereiste onderdelen, de app die u wilt uitvoeren en andere configuratie-installatiekopieën.
Dockerfile is de invoer voor het docker build commando dat de image creëert.
Voor deze oefening bouwt u een afbeelding op basis van de microsoft/aspnet afbeelding op Docker Hub.
De basisimage, mcr.microsoft.com/dotnet/framework/aspnet:4.8, is een Windows Server-image. Het bevat Windows Server Core, IIS en ASP.NET 4.8. Wanneer u deze image in uw container uitvoert, worden IIS en de geïnstalleerde websites automatisch gestart.
De Dockerfile die uw image maakt, ziet er als volgt uit:
# 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
Er is geen ENTRYPOINT opdracht in dit Dockerfile. Je hebt er geen nodig. Bij het uitvoeren van Windows Server met IIS is het IIS-proces het invoerpunt, dat is geconfigureerd om te starten in de aspnet-basisafbeelding.
Voer de opdracht Docker Build uit om de installatiekopieën te maken waarop uw ASP.NET-app wordt uitgevoerd. Hiervoor opent u een PowerShell-venster in de map van uw project en typt u de volgende opdracht in de oplossingsmap:
docker build -t mvcrandomanswers .
Met deze opdracht wordt de nieuwe image gemaakt met behulp van de instructies in uw Dockerfile, waarbij de image als mvcrandomanswers wordt getagd (-t). Dit kan bijvoorbeeld het ophalen van de basisinstallatiekopie uit Docker Hub zijn en vervolgens uw app toevoegen aan die installatiekopie.
Zodra deze opdracht is voltooid, kunt u het docker images commando uitvoeren om informatie over de nieuwe image weer te geven.
REPOSITORY TAG IMAGE ID CREATED SIZE
mvcrandomanswers latest 86838648aab6 2 minutes ago 10.1 GB
De afbeeldings-ID zal anders zijn op uw computer. Nu gaan we de app uitvoeren.
Een container starten
Start een container door de volgende docker run opdracht uit te voeren:
docker run -d --name randomanswers mvcrandomanswers
Het -d argument vertelt Docker om de afbeelding in losgekoppelde modus te starten. Dit betekent dat de Docker-image losgekoppeld van de huidige shell wordt uitgevoerd.
In veel Docker-voorbeelden ziet u mogelijk -p om de container- en hostpoorten toe te wijzen. De standaard aspnet-afbeelding heeft de container al geconfigureerd om verbindingen op poort 80 te accepteren en deze te publiceren.
De --name randomanswers naam geeft een naam aan de actieve container. U kunt deze naam gebruiken in plaats van de container-id in de meeste opdrachten.
De mvcrandomanswers is de naam van het image om te starten.
Controleren in de browser
Zodra de container is gestart, maakt u verbinding met de actieve container met behulp van http://localhost het voorbeeld dat wordt weergegeven. Typ die URL in uw browser en u ziet de actieve site.
Opmerking
Sommige VPN- of proxysoftware voorkomt mogelijk dat u naar uw site navigeert. U kunt deze tijdelijk uitschakelen om ervoor te zorgen dat uw container werkt.
De voorbeeldmap op GitHub bevat een PowerShell-script waarmee deze opdrachten voor u worden uitgevoerd. Open een PowerShell-venster, wijzig de map in uw oplossingsmap en typ:
./run.ps1
Met de bovenstaande opdracht worden de images gebouwd, wordt de lijst van images op uw machine weergegeven en wordt een container gestart.
Als u de container wilt stoppen, voert u een docker stop opdracht uit:
docker stop randomanswers
Als u de container wilt verwijderen, voert u een docker rm opdracht uit:
docker rm randomanswers