Dela via


Kör en ASP.NET Core-applikation i Dockercontainrar

Anmärkning

Det här är inte den senaste versionen av den här artikeln. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Varning

Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Viktigt!

Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.

För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Den här artikeln visar hur du kör en ASP.NET Core-app i Docker-containrar.

Windows Home Edition stöder inte Hyper-V och Hyper-V behövs för Docker.

Se Containerize a .NET app with dotnet publish för information om att containerisera en .NET-app med dotnet publish.

ASP.NET Core Docker-avbildningar

I den här självstudien laddar du ned en ASP.NET Core-exempelapp och kör den i Docker-containrar. Exemplet fungerar med både Linux- och Windows-containrar.

Dockerfile-exemplet använder docker-funktionen för flerstegsversion för att skapa och köra i olika containrar. Bygg- och körcontainrarna skapas från bilder som tillhandahålls i Docker Hub av Microsoft.

  • dotnet/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

Förutsättningar

Ladda ned exempelprogrammet

Köra appen lokalt

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör följande kommando för att skapa och köra appen lokalt:

    dotnet run
    
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

  • Tryck på Ctrl+C i kommandotolken för att stoppa appen.

Köra i en Linux-container eller en Windows-container

  • Om du vill köra i en Linux-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Linux-containrar.

  • Om du vill köra i en Windows-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Windows-containrar.

  • Navigera till dockerfile-mappen på dotnet-docker/samples/aspnetapp.

  • Kör följande kommandon för att skapa och köra exemplet i Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argument för build kommandot:

    • Ge bilden namnet aspnetapp.
    • Leta efter Dockerfile i den aktuella mappen (perioden i slutet).

    Argument för körningskommandot:

    • Allokera en pseudo-TTY och håll den öppen även om den inte är ansluten. (Samma effekt som --interactive --tty.)
    • Ta automatiskt bort containern när den avslutas.
    • Mappa <port> på den lokala datorn till port 8080 i containern.
    • Ge containern namnet aspnetcore_sample.
    • Ange aspnetapp-avbildningen.
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

Skapa och distribuera manuellt

I vissa scenarier kanske du vill distribuera en app till en container genom att kopiera dess resurser som behövs vid körtid. Det här avsnittet visar hur du distribuerar manuellt.

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör kommandot dotnet publish :

    dotnet publish -c Release -o published
    

    Kommandoargumenten:

    • Skapa appen i versionsläge (standardvärdet är felsökningsläge).
    • Skapa tillgångarna i den publicerade mappen.
  • Kör appen.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Bläddra till http://localhost:<port> för att se startsidan.

Om du vill använda den manuellt publicerade appen i en Docker-container skapar du en ny Dockerfile och använder docker build . kommandot för att skapa en avbildning.

FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

Ytterligare resurser

Nästa steg

Git-lagringsplatsen som innehåller exempelappen innehåller även dokumentation. En översikt över de resurser som är tillgängliga på lagringsplatsen finns i README-filen. I synnerhet lär du dig hur du implementerar HTTPS:

ASP.NET Core Docker-avbildningar

I den här självstudien laddar du ned en ASP.NET Core-exempelapp och kör den i Docker-containrar. Exemplet fungerar med både Linux- och Windows-containrar.

Dockerfile-exemplet använder docker-funktionen för flerstegsversion för att skapa och köra i olika containrar. Bygg- och körcontainrarna skapas från bilder som tillhandahålls i Docker Hub av Microsoft.

  • dotnet/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

Förutsättningar

Ladda ned exempelprogrammet

Köra appen lokalt

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör följande kommando för att skapa och köra appen lokalt:

    dotnet run
    
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

  • Tryck på Ctrl+C i kommandotolken för att stoppa appen.

Köra i en Linux-container eller en Windows-container

  • Om du vill köra i en Linux-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Linux-containrar.

  • Om du vill köra i en Windows-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Windows-containrar.

  • Navigera till dockerfile-mappen på dotnet-docker/samples/aspnetapp.

  • Kör följande kommandon för att skapa och köra exemplet i Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argument för build kommandot:

    • Ge bilden namnet aspnetapp.
    • Leta efter Dockerfile i den aktuella mappen (perioden i slutet).

    Argument för körningskommandot:

    • Allokera en pseudo-TTY och håll den öppen även om den inte är ansluten. (Samma effekt som --interactive --tty.)
    • Ta automatiskt bort containern när den avslutas.
    • Mappa <port> på den lokala datorn till port 8080 i containern.
    • Ge containern namnet aspnetcore_sample.
    • Ange aspnetapp-avbildningen.
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

Skapa och distribuera manuellt

I vissa scenarier kanske du vill distribuera en app till en container genom att kopiera dess resurser som behövs vid körtid. Det här avsnittet visar hur du distribuerar manuellt.

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör kommandot dotnet publish :

    dotnet publish -c Release -o published
    

    Kommandoargumenten:

    • Skapa appen i versionsläge (standardvärdet är felsökningsläge).
    • Skapa tillgångarna i den publicerade mappen.
  • Kör appen.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Bläddra till http://localhost:<port> för att se startsidan.

Om du vill använda den manuellt publicerade appen i en Docker-container skapar du en ny Dockerfile och använder docker build . kommandot för att skapa en avbildning.

FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

Ytterligare resurser

Nästa steg

Git-lagringsplatsen som innehåller exempelappen innehåller även dokumentation. En översikt över de resurser som är tillgängliga på lagringsplatsen finns i README-filen. I synnerhet lär du dig hur du implementerar HTTPS:

ASP.NET Core Docker-avbildningar

I den här självstudien laddar du ned en ASP.NET Core-exempelapp och kör den i Docker-containrar. Exemplet fungerar med både Linux- och Windows-containrar.

Dockerfile-exemplet använder docker-funktionen för flerstegsversion för att skapa och köra i olika containrar. Bygg- och körcontainrarna skapas från bilder som tillhandahålls i Docker Hub av Microsoft.

  • dotnet/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

Förutsättningar

Ladda ned exempelprogrammet

Köra appen lokalt

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör följande kommando för att skapa och köra appen lokalt:

    dotnet run
    
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

  • Tryck på Ctrl+C i kommandotolken för att stoppa appen.

Köra i en Linux-container eller en Windows-container

  • Om du vill köra i en Linux-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Linux-containrar.

  • Om du vill köra i en Windows-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Windows-containrar.

  • Navigera till dockerfile-mappen på dotnet-docker/samples/aspnetapp.

  • Kör följande kommandon för att skapa och köra exemplet i Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argument för build kommandot:

    • Ge bilden namnet aspnetapp.
    • Leta efter Dockerfile i den aktuella mappen (perioden i slutet).

    Argument för körningskommandot:

    • Allokera en pseudo-TTY och håll den öppen även om den inte är ansluten. (Samma effekt som --interactive --tty.)
    • Ta automatiskt bort containern när den avslutas.
    • Mappa <port> på den lokala datorn till port 8080 i containern.
    • Ge containern namnet aspnetcore_sample.
    • Ange aspnetapp-avbildningen.
  • Gå till http://localhost:<port> i en webbläsare för att testa appen.

Skapa och distribuera manuellt

I vissa scenarier kanske du vill distribuera en app till en container genom att kopiera dess resurser som behövs vid körtid. Det här avsnittet visar hur du distribuerar manuellt.

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör kommandot dotnet publish :

    dotnet publish -c Release -o published
    

    Kommandoargumenten:

    • Skapa appen i versionsläge (standardvärdet är felsökningsläge).
    • Skapa tillgångarna i den publicerade mappen.
  • Kör appen.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Bläddra till http://localhost:<port> för att se startsidan.

Om du vill använda den manuellt publicerade appen i en Docker-container skapar du en ny Dockerfile och använder docker build . kommandot för att skapa en avbildning.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

Ytterligare resurser

Nästa steg

Git-lagringsplatsen som innehåller exempelappen innehåller även dokumentation. En översikt över de resurser som är tillgängliga på lagringsplatsen finns i README-filen. I synnerhet lär du dig hur du implementerar HTTPS:

ASP.NET Core Docker-avbildningar

I den här självstudien laddar du ned en ASP.NET Core-exempelapp och kör den i Docker-containrar. Exemplet fungerar med både Linux- och Windows-containrar.

Dockerfile-exemplet använder docker-funktionen för flerstegsversion för att skapa och köra i olika containrar. Bygg- och körcontainrarna skapas från bilder som tillhandahålls i Docker Hub av Microsoft.

  • dotnet/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

Förutsättningar

Ladda ned exempelprogrammet

Köra appen lokalt

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör följande kommando för att skapa och köra appen lokalt:

    dotnet run
    
  • Gå till http://localhost:5000 i en webbläsare för att testa appen.

  • Tryck på Ctrl+C i kommandotolken för att stoppa appen.

Köra i en Linux-container eller en Windows-container

  • Om du vill köra i en Linux-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Linux-containrar.

  • Om du vill köra i en Windows-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Windows-containrar.

  • Navigera till dockerfile-mappen på dotnet-docker/samples/aspnetapp.

  • Kör följande kommandon för att skapa och köra exemplet i Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argument för build kommandot:

    • Ge bilden namnet aspnetapp.
    • Leta efter Dockerfile i den aktuella mappen (perioden i slutet).

    Argument för körningskommandot:

    • Allokera en pseudo-TTY och håll den öppen även om den inte är ansluten. (Samma effekt som --interactive --tty.)
    • Ta automatiskt bort containern när den avslutas.
    • Mappa port 5000 på den lokala datorn till port 80 i containern.
    • Ge containern namnet aspnetcore_sample.
    • Ange aspnetapp-avbildningen.
  • Gå till http://localhost:5000 i en webbläsare för att testa appen.

Skapa och distribuera manuellt

I vissa scenarier kanske du vill distribuera en app till en container genom att kopiera dess resurser som behövs vid körtid. Det här avsnittet visar hur du distribuerar manuellt.

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör kommandot dotnet publish :

    dotnet publish -c Release -o published
    

    Kommandoargumenten:

    • Skapa appen i versionsläge (standardvärdet är felsökningsläge).
    • Skapa tillgångarna i den publicerade mappen.
  • Kör appen.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Bläddra till http://localhost:5000 för att se startsidan.

Om du vill använda den manuellt publicerade appen i en Docker-container skapar du en ny Dockerfile och använder docker build . kommandot för att skapa en avbildning.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

Ytterligare resurser

Nästa steg

Git-lagringsplatsen som innehåller exempelappen innehåller även dokumentation. En översikt över de resurser som är tillgängliga på lagringsplatsen finns i README-filen. I synnerhet lär du dig hur du implementerar HTTPS:

ASP.NET Core Docker-avbildningar

I den här självstudien laddar du ned en ASP.NET Core-exempelapp och kör den i Docker-containrar. Exemplet fungerar med både Linux- och Windows-containrar.

Dockerfile-exemplet använder docker-funktionen för flerstegsversion för att skapa och köra i olika containrar. Bygg- och körcontainrarna skapas från bilder som tillhandahålls i Docker Hub av Microsoft.

  • dotnet/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/core/sdk

    Exemplet använder den här bilden för att bygga appen. Avbildningen innehåller .NET Core SDK, som innehåller kommandoradsverktygen (CLI). Avbildningen är optimerad för lokal utveckling, felsökning och enhetstestning. Verktygen som är installerade för utveckling och kompilering gör avbildningen relativt stor.

  • dotnet/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

  • dotnet/core/aspnet

    Exemplet använder den här avbildningen för att köra appen. Bilden innehåller ASP.NET Core-körtid och bibliotek och är optimerad för att köra appar i en produktionsmiljö. Avbildningen är utformad för snabb distribution och appstart och är relativt liten, vilket optimerar nätverksprestandan från Docker Registry till Docker-värden. Endast de binärfiler och innehåll som behövs för att köra en app kopieras till containern. Innehållet är redo att köras, vilket möjliggör den snabbaste tiden från docker run till appstart. Dynamisk kodkompilering behövs inte i Docker-modellen.

Förutsättningar

Ladda ned exempelprogrammet

Köra appen lokalt

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör följande kommando för att skapa och köra appen lokalt:

    dotnet run
    
  • Gå till http://localhost:5000 i en webbläsare för att testa appen.

  • Tryck på Ctrl+C i kommandotolken för att stoppa appen.

Köra i en Linux-container eller en Windows-container

  • Om du vill köra i en Linux-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Linux-containrar.

  • Om du vill köra i en Windows-container högerklickar du på Docker-klientikonen för systemfältet och väljer växla till Windows-containrar.

  • Navigera till dockerfile-mappen på dotnet-docker/samples/aspnetapp.

  • Kör följande kommandon för att skapa och köra exemplet i Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argument för build kommandot:

    • Ge bilden namnet aspnetapp.
    • Leta efter Dockerfile i den aktuella mappen (perioden i slutet).

    Argument för körningskommandot:

    • Allokera en pseudo-TTY och håll den öppen även om den inte är ansluten. (Samma effekt som --interactive --tty.)
    • Ta automatiskt bort containern när den avslutas.
    • Mappa port 5000 på den lokala datorn till port 80 i containern.
    • Ge containern namnet aspnetcore_sample.
    • Ange aspnetapp-avbildningen.
  • Gå till http://localhost:5000 i en webbläsare för att testa appen.

Skapa och distribuera manuellt

I vissa scenarier kanske du vill distribuera en app till en container genom att kopiera dess resurser som behövs vid körtid. Det här avsnittet visar hur du distribuerar manuellt.

  • Gå till projektmappen på dotnet-docker/samples/aspnetapp/aspnetapp.

  • Kör kommandot dotnet publish :

    dotnet publish -c Release -o published
    

    Kommandoargumenten:

    • Skapa appen i versionsläge (standardvärdet är felsökningsläge).
    • Skapa tillgångarna i den publicerade mappen.
  • Kör appen.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Bläddra till http://localhost:5000 för att se startsidan.

Om du vill använda den manuellt publicerade appen i en Docker-container skapar du en ny Dockerfile och använder docker build . kommandot för att skapa en avbildning.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Om du vill se den nya avbildningen använder du docker images kommandot .

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Som nämnts i föregående Dockerfile *.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

The Dockerfile

Här är den Dockerfile som användes av kommandot docker build som du körde tidigare. Den använder dotnet publish samma sätt som du gjorde i det här avsnittet för att skapa och distribuera.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

I föregående Dockerfile*.csproj kopieras och återställs filerna som distinkta lager. docker build När kommandot skapar en avbildning använder det en inbyggd cache. *.csproj Om filerna inte har ändrats sedan docker build kommandot kördes dotnet restore senast behöver kommandot inte köras igen. I stället återanvänds den inbyggda cachen för motsvarande dotnet restore lager. Mer information finns i Metodtips för att skriva Dockerfiles.

Ytterligare resurser

Nästa steg

Git-lagringsplatsen som innehåller exempelappen innehåller även dokumentation. En översikt över de resurser som är tillgängliga på lagringsplatsen finns i README-filen. I synnerhet lär du dig hur du implementerar HTTPS: