Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
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/sdkUká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/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
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 runPřejděte do
http://localhost:<port>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 <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpří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>na místním počítači port 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetappu.
Přejděte do
http://localhost:<port>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 publishedArgumenty 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.dllLinux:
dotnet published/aspnetapp.dll
Přejděte na
http://localhost:<port>a zobrazte 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:10.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: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"]
V předchozím se soubory zkopírují a obnoví jako odlišné *.csproj.
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, nemusí se dotnet restore příkaz 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
- Kontejnerizace aplikace .NET s publikováním dotnet
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET ukázku Core Dockeru (ta, která se používá v tomto kurzu.)
- Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
- Práce s nástroji Visual Studio Docker Tools
- Ladění pomocí editoru Visual Studio Code
- GC s využitím Dockeru a malých kontejnerů
- System.IO.IOException: Byl dosažen nakonfigurovaný limit uživatele (128) počtu inotify instancí.
- Aktualizace imagí Dockeru
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/sdkUká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/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
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 runPřejděte do
http://localhost:<port>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 <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpří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>na místním počítači port 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetappu.
Přejděte do
http://localhost:<port>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 publishedArgumenty 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.dllLinux:
dotnet published/aspnetapp.dll
Přejděte na
http://localhost:<port>a zobrazte 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:9.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: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"]
V předchozím se soubory zkopírují a obnoví jako odlišné *.csproj.
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
- Kontejnerizace aplikace .NET s publikováním dotnet
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET ukázku Core Dockeru (ta, která se používá v tomto kurzu.)
- Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
- Práce s nástroji Visual Studio Docker Tools
- Ladění pomocí editoru Visual Studio Code
- GC s využitím Dockeru a malých kontejnerů
- System.IO.IOException: Byl dosažen nakonfigurovaný limit uživatele (128) počtu inotify instancí.
- Aktualizace imagí Dockeru
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/sdkUká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/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
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 runPřejděte do
http://localhost:<port>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 <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpří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>na místním počítači port 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetappu.
Přejděte do
http://localhost:<port>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 publishedArgumenty 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.dllLinux:
dotnet published/aspnetapp.dll
Přejděte na
http://localhost:<port>a zobrazte 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 se soubory zkopírují a obnoví jako odlišné *.csproj.
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
- Kontejnerizace aplikace .NET s publikováním dotnet
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET ukázku Core Dockeru (ta, která se používá v tomto kurzu.)
- Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
- Práce s nástroji Visual Studio Docker Tools
- Ladění pomocí editoru Visual Studio Code
- GC s využitím Dockeru a malých kontejnerů
- System.IO.IOException: Byl dosažen nakonfigurovaný limit uživatele (128) počtu inotify instancí.
- Aktualizace imagí Dockeru
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/sdkUká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/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
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 runPřejděte do
http://localhost:5000prohlíž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 aspnetappArgumenty
buildpří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:5000prohlíž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 publishedArgumenty 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.dllLinux:
dotnet published/aspnetapp.dll
Přejděte na
http://localhost:5000a zobrazte 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 se soubory zkopírují a obnoví jako odlišné *.csproj.
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
- Kontejnerizace aplikace .NET s publikováním dotnet
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET ukázku Core Dockeru (ta, která se používá v tomto kurzu.)
- Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
- Práce s nástroji Visual Studio Docker Tools
- Ladění pomocí editoru Visual Studio Code
- GC s využitím Dockeru a malých kontejnerů
- System.IO.IOException: Byl dosažen nakonfigurovaný limit uživatele (128) počtu inotify instancí.
- Aktualizace imagí Dockeru
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/sdkUká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/sdkUká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/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
dotnet/core/aspnetUká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 runspuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
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 runPřejděte do
http://localhost:5000prohlíž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 aspnetappArgumenty
buildpří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:5000prohlíž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 publishedArgumenty 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.dllLinux:
dotnet published/aspnetapp.dll
Přejděte na
http://localhost:5000a zobrazte 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 se soubory zkopírují a obnoví jako odlišné *.csproj.
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 se soubory zkopírují a obnoví jako odlišné *.csproj.
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
- Kontejnerizace aplikace .NET s publikováním dotnet
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET ukázku Core Dockeru (ta, která se používá v tomto kurzu.)
- Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
- Práce s nástroji Visual Studio Docker Tools
- Ladění pomocí editoru Visual Studio Code
- GC s využitím Dockeru a malých kontejnerů
- System.IO.IOException: Byl dosažen nakonfigurovaný limit uživatele (128) počtu inotify instancí.
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: