Image Dockeru pro ASP.NET Core

Tento článek ukazuje, jak spustit aplikaci ASP.NET Core v kontejnerech Dockeru.

Windows Home Edition nepodporuje Technologii Hyper-V a pro Docker je potřeba Technologie Hyper-V.

Informace o kontejnerizované aplikaci .NET s publikováním dotnetu najdete v tématu Kontejnerizace aplikace .NET s dotnet publish.

ASP.NET core imagí Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci sestavení dockeru s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tato image je navržená pro rychlost nasazení a spuštění aplikace relativně malá, takže výkon sítě z Registru Dockeru na hostitele Dockeru je optimalizovaný. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje nejrychlejší čas od docker run spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Předpoklady

Stažení ukázkové aplikace

  • Stáhněte si ukázku klonováním úložiště .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Pokud chcete spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepínač na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

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

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Při ukončení kontejneru automaticky odeberte.
    • Namapujte port 5000 na místním počítači na port 8080 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetappu.
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných za běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí režim ladění).
    • Vytvořte prostředky v publikované složce.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:5000 domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

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

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

# 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"]

V předchozím souboru Dockerfile *.csprojse soubory zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET core imagí Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci sestavení dockeru s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tato image je navržená pro rychlost nasazení a spuštění aplikace relativně malá, takže výkon sítě z Registru Dockeru na hostitele Dockeru je optimalizovaný. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje nejrychlejší čas od docker run spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Předpoklady

Stažení ukázkové aplikace

  • Stáhněte si ukázku klonováním úložiště .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Pokud chcete spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepínač na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

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

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Při ukončení kontejneru automaticky odeberte.
    • Namapujte port 5000 na místním počítači na port 80 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetappu.
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných za běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí režim ladění).
    • Vytvořte prostředky v publikované složce.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:5000 domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

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

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

# 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"]

V předchozím souboru Dockerfile *.csprojse soubory zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET core imagí Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci sestavení dockeru s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/core/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET Core SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tato image je navržená pro rychlost nasazení a spuštění aplikace relativně malá, takže výkon sítě z Registru Dockeru na hostitele Dockeru je optimalizovaný. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje nejrychlejší čas od docker run spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

  • dotnet/core/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tato image je navržená pro rychlost nasazení a spuštění aplikace relativně malá, takže výkon sítě z Registru Dockeru na hostitele Dockeru je optimalizovaný. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje nejrychlejší čas od docker run spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Předpoklady

Stažení ukázkové aplikace

  • Stáhněte si ukázku klonováním úložiště .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Pokud chcete spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepínač na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

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

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Při ukončení kontejneru automaticky odeberte.
    • Namapujte port 5000 na místním počítači na port 80 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetappu.
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných za běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí režim ladění).
    • Vytvořte prostředky v publikované složce.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:5000 domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

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

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

# 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"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

# 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"]

V předchozím souboru Dockerfile *.csprojse soubory zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

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

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

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"]

Jak je uvedeno v předchozím souboru Dockerfile, *.csproj soubory se zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

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

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

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"]

V předchozím souboru Dockerfile *.csprojse soubory zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS: