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.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
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 tom, jak kontejnerizovat aplikaci .NET s využitím nástroje dotnet publish, najdete v části
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 Dockeru pro sestavení 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í. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. 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í, zaručení co nejkratší doby od
docker rundo spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
Klient Dockeru 18.03 nebo novější
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.
Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout 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.) - Automaticky odeberte kontejner při jeho ukončení.
- Přiřaďte
<port>na místním počítači k portu 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetapp.
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 během 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í je ladicí režim).
- Vytvořte soubory ve 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 k sestavení a nasazení, jakým jste to udělali v této části.
# 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 Dockerfile jsou soubory *.csproj zkopírovány a obnoveny 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, 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 pomocí příkazu dotnet publish
- Příkaz docker buildu
- Příkaz Docker Run
- Ukázka ASP.NET Core Docker (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 Dockeru pro sestavení 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í. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. 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í, zaručení co nejkratší doby od
docker rundo spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
Klient Dockeru 18.03 nebo novější
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.
Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout 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.) - Automaticky odeberte kontejner při jeho ukončení.
- Přiřaďte
<port>na místním počítači k portu 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetapp.
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 během 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 release (ve výchozím je režim ladění).
- Vytvořte soubory ve složce published.
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 Dockerfile se 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
- Dockerizace aplikace .NET pomocí dotnet publish
- Příkaz docker buildu
- Příkaz Docker Run
- ASP.NET Core Docker příklad (ten, 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 obrázky 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 Dockeru pro sestavení 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í. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. 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í, zaručení co nejkratší doby od
docker rundo spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
Klient Dockeru 18.03 nebo novější
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.
Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout 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 udržujte jej otevřené, i když není připojeno. (Stejný účinek jako
--interactive --tty.) - Automaticky odstraňte kontejner při jeho ukončení.
- Namapujte
<port>na místním počítači port 8080 v kontejneru. - Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetapp.
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 přejít s aplikací do kontejneru zkopírováním prostředků potřebných v době běhu aplikace. Tato část ukazuje, jak nasadit systém 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 soubory ve složce publikované.
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ý jste použili 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"]
Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé 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
- Kontejnerizace aplikace .NET pomocí dotnet publish
- Docker build příkaz
- Příkaz Docker Run
- Ukázka pro ASP.NET Core v Dockeru (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 Docker imagí
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 ke 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í. Obraz je navržen pro rychlé nasazení a spuštění aplikace a je relativně malý, což optimalizuje výkon sítě mezi Docker Registry a Docker hostitelem. 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 co nejrychlejší spuštění aplikace od
docker run. V modelu Dockeru není nutná dynamická kompilace kódu.
Požadavky
Klient Dockeru 18.03 nebo novější
Stažení ukázkové aplikace
Stáhněte si ukázku klonováním .NET Docker repository:
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.
Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout 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.) - Automaticky odeberte kontejner při jeho ukončení.
- Namapujte port 5000 na místním počítači na port 80 v kontejneru.
- Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetapp.
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 během 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í je ladicí režim).
- Vytvořte soubory ve 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 k sestavení a nasazení, jakým jste to udělali v této části.
# 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 Dockerfile jsou soubory *.csproj zkopírovány a obnoveny 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
- Kontejnerizace aplikace .NET pomocí příkazu dotnet publish
- Příkaz docker buildu
- Příkaz Docker Run
- Ukázka ASP.NET Core Docker (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 Docker imagí
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 ke 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í. Tento obraz je navržený pro rychlé nasazení a spuštění aplikace. Je relativně malý, takže je optimalizovaný výkon sítě od registru Dockeru k hostiteli Dockeru. 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í, což umožňuje nejrychlejší spuštění aplikace od
docker run. 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í. Obraz je navržen pro rychlé nasazení a spuštění aplikace a je relativně malý, což optimalizuje výkon sítě mezi Docker Registry a Docker hostitelem. 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 co nejrychlejší spuštění aplikace od
docker run. 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 .NET Docker repository:
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 Windows kontejner, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v oznamovací oblasti a vyberte přepnout na Windows kontejnery.
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 udržujte jej otevřené, i když není připojeno. (Stejný účinek jako
--interactive --tty.) - Automaticky odstraňte kontejner při jeho ukončení.
- Namapujte port 5000 na místním počítači na port 80 v kontejneru.
- Pojmenujte kontejner aspnetcore_sample.
- Zadejte image aspnetapp.
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 přejít s aplikací do kontejneru zkopírováním prostředků potřebných v době běhu aplikace. Tato část ukazuje, jak nasadit systém 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 soubory ve složce publikované.
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ý jste použili 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ý jste použili 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"]
Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé 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ý jste použili 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 tyto soubory se zkopírují, a obnoví se 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ý jste použili 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"]
Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé 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
- Kontejnerizace aplikace .NET pomocí dotnet publish
- Příkaz docker buildu
- Příkaz Docker Run
- Ukázka Docker ASP.NET Core (která je použita 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: