Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.
W tym artykule pokazano, jak uruchomić aplikację ASP.NET Core w kontenerach platformy Docker.
Wersja systemu Windows Home nie obsługuje funkcji Hyper-V, a funkcja Hyper-V jest wymagana dla platformy Docker.
Zobacz Konteneryzacja aplikacji .NET za pomocą polecenia dotnet publish, aby uzyskać informacje na temat konteneryzacji aplikacji platformy .NET za pomocą dotnet publish.
ASP.NET Core obrazy Dockera
Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.
Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:
dotnet/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
Wymagania wstępne
Pobieranie przykładowej aplikacji
Pobierz przykład, klonując repozytorium Docker .NET:
git clone https://github.com/dotnet/dotnet-docker
Lokalne uruchamianie aplikacji
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:
dotnet runW przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.
Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows
Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.
Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery Windows.
Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.
Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpolecenia:- Nadaj obrazowi nazwę aspnetapp.
- Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).
Argumenty polecenia „run”:
- Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak
--interactive --tty.) - Automatycznie usuń kontener po jego opuszczeniu.
- Przypisz
<port>na komputerze lokalnym do portu 8080 w kontenerze. - Nadaj kontenerowi nazwę aspnetcore_sample.
- Określ obraz aplikacji aspnetapp.
W przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.
Ręczne kompilowanie i wdrażanie
W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom polecenie dotnet publish:
dotnet publish -c Release -o publishedArgumenty polecenia:
- Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
- Utwórz zasoby w folderze published.
Uruchom aplikację.
Windows:
dotnet published\aspnetapp.dllLinux:
dotnet published/aspnetapp.dll
Przejdź do
http://localhost:<port>, aby zobaczyć stronę główną.
Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zmieniły się od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
Dodatkowe zasoby
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Polecenie Docker run
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów Docker
Następne kroki
Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:
ASP.NET Core obrazy Dockera
Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.
Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:
dotnet/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
Wymagania wstępne
Pobieranie przykładowej aplikacji
Pobierz przykład, klonując repozytorium Docker .NET:
git clone https://github.com/dotnet/dotnet-docker
Lokalne uruchamianie aplikacji
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:
dotnet runW przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.
Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows
Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.
Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery Windows.
Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.
Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpolecenia:- Nadaj obrazowi nazwę aspnetapp.
- Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).
Argumenty polecenia „run”:
- Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak
--interactive --tty.) - Automatycznie usuń kontener po jego opuszczeniu.
- Przypisz
<port>na komputerze lokalnym do portu 8080 w kontenerze. - Nadaj kontenerowi nazwę aspnetcore_sample.
- Określ obraz aplikacji aspnetapp.
W przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.
Ręczne kompilowanie i wdrażanie
W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom polecenie dotnet publish:
dotnet publish -c Release -o publishedArgumenty polecenia:
- Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
- Utwórz zasoby w folderze published.
Uruchom aplikację.
Windows:
dotnet published\aspnetapp.dllLinux:
dotnet published/aspnetapp.dll
Przejdź do
http://localhost:<port>, aby zobaczyć stronę główną.
Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
Dodatkowe zasoby
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Polecenie Docker run
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów Docker
Następne kroki
Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:
ASP.NET Core obrazy Dockera
Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.
Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:
dotnet/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
Wymagania wstępne
Pobieranie przykładowej aplikacji
Pobierz przykład, klonując repozytorium Docker .NET:
git clone https://github.com/dotnet/dotnet-docker
Lokalne uruchamianie aplikacji
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:
dotnet runW przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.
Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows
Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.
Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery Windows.
Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.
Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetappArgumenty
buildpolecenia:- Nadaj obrazowi nazwę aspnetapp.
- Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).
Argumenty polecenia „run”:
- Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak
--interactive --tty.) - Automatycznie usuń kontener po jego opuszczeniu.
- Przypisz
<port>na komputerze lokalnym do portu 8080 w kontenerze. - Nadaj kontenerowi nazwę aspnetcore_sample.
- Określ obraz aplikacji aspnetapp.
W przeglądarce przejdź do
http://localhost:<port>, aby przetestować aplikację.
Ręczne kompilowanie i wdrażanie
W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom polecenie dotnet publish:
dotnet publish -c Release -o publishedArgumenty polecenia:
- Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
- Utwórz zasoby w folderze published.
Uruchom aplikację.
Windows:
dotnet published\aspnetapp.dllLinux:
dotnet published/aspnetapp.dll
Przejdź do
http://localhost:<port>, aby zobaczyć stronę główną.
Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
Dodatkowe zasoby
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Polecenie Docker run
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów Docker
Następne kroki
Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:
ASP.NET Core obrazy Dockera
Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.
Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:
dotnet/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
Wymagania wstępne
Pobieranie przykładowej aplikacji
Pobierz przykład, klonując repozytorium Docker .NET:
git clone https://github.com/dotnet/dotnet-docker
Lokalne uruchamianie aplikacji
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:
dotnet runW przeglądarce przejdź do
http://localhost:5000, aby przetestować aplikację.Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.
Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows
Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.
Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery Windows.
Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.
Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetappArgumenty
buildpolecenia:- Nadaj obrazowi nazwę aspnetapp.
- Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).
Argumenty polecenia „run”:
- Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak
--interactive --tty.) - Automatycznie usuń kontener po jego opuszczeniu.
- Zmapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
- Nadaj kontenerowi nazwę aspnetcore_sample.
- Określ obraz aplikacji aspnetapp.
W przeglądarce przejdź do
http://localhost:5000, aby przetestować aplikację.
Ręczne kompilowanie i wdrażanie
W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom polecenie dotnet publish:
dotnet publish -c Release -o publishedArgumenty polecenia:
- Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
- Utwórz zasoby w folderze published.
Uruchom aplikację.
Windows:
dotnet published\aspnetapp.dllLinux:
dotnet published/aspnetapp.dll
Przejdź do
http://localhost:5000, aby zobaczyć stronę główną.
Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
Dodatkowe zasoby
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Polecenie Docker run
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów Docker
Następne kroki
Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:
ASP.NET Core obrazy Dockera
Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.
Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:
dotnet/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/core/sdkW przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET Core SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.
dotnet/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
dotnet/core/aspnetW przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, co umożliwia najszybsze przejście od
docker rundo uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.
Wymagania wstępne
Pobieranie przykładowej aplikacji
Pobierz przykład, klonując repozytorium Docker .NET:
git clone https://github.com/dotnet/dotnet-docker
Lokalne uruchamianie aplikacji
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:
dotnet runW przeglądarce przejdź do
http://localhost:5000, aby przetestować aplikację.Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.
Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows
Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.
Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery Windows.
Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.
Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetappArgumenty
buildpolecenia:- Nadaj obrazowi nazwę aspnetapp.
- Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).
Argumenty polecenia „run”:
- Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak
--interactive --tty.) - Automatycznie usuń kontener po jego opuszczeniu.
- Zmapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
- Nadaj kontenerowi nazwę aspnetcore_sample.
- Określ obraz aplikacji aspnetapp.
W przeglądarce przejdź do
http://localhost:5000, aby przetestować aplikację.
Ręczne kompilowanie i wdrażanie
W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.
Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.
Uruchom polecenie dotnet publish:
dotnet publish -c Release -o publishedArgumenty polecenia:
- Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
- Utwórz zasoby w folderze published.
Uruchom aplikację.
Windows:
dotnet published\aspnetapp.dllLinux:
dotnet published/aspnetapp.dll
Przejdź do
http://localhost:5000, aby zobaczyć stronę główną.
Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
Aby wyświetlić nowy obraz, użyj docker images polecenia .
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
# 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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
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 wspomniano w poprzednim pliku Dockerfile, *.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Plik Dockerfile
Oto plik Dockerfile, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.
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"]
W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej.
*.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.
Dodatkowe zasoby
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Polecenie Docker run
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
Następne kroki
Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS: