Udostępnij przez


Szybki start: narzędzia kontenerów w programie Visual Studio

Za pomocą programu Visual Studio można łatwo kompilować, debugować i uruchamiać konteneryzowane aplikacje .NET, ASP.NET i ASP.NET Core oraz publikować je w usłudze Azure Container Registry, Docker Hub, aplikacja systemu Azure Service lub własnym rejestrze kontenerów. W tym artykule opublikujesz aplikację ASP.NET Core w usłudze Azure Container Registry.

Wymagania wstępne

Wymagania wstępne

Instalacja i konfiguracja

W przypadku instalacji platformy Docker najpierw zapoznaj się z informacjami w witrynie Docker Desktop dla systemu Windows: co należy wiedzieć przed zainstalowaniem. Następnie zainstaluj program Docker Desktop.

Instalacja i konfiguracja

W przypadku instalacji platformy Docker najpierw zapoznaj się z informacjami w witrynie Docker Desktop dla systemu Windows: co należy wiedzieć przed zainstalowaniem. Następnie zainstaluj program Docker Desktop.

Aby użyć Podman jako platformy kontenerowej, pobierz program Podman Desktop dla systemu Windows, a następnie postępuj zgodnie z samouczkiem Podman for Windows, aby zainicjować i uruchomić maszynę Podman.

Dodawanie projektu do kontenera

  1. Przed utworzeniem projektu programu Visual Studio upewnij się, że program Docker Desktop uruchamia typ kontenerów (Windows lub Linux), które mają być używane w projekcie programu Visual Studio.

    Aby zmienić typ kontenera używany przez program Docker Desktop, kliknij prawym przyciskiem myszy ikonę platformy Docker (wieloryb) na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux lub Przełącz do kontenerów systemu Windows.

    Ostrzeżenie

    Jeśli zmienisz typ kontenera po utworzeniu projektu programu Visual Studio, ładowanie plików obrazów platformy Docker może zakończyć się niepowodzeniem.

  2. Utwórz nowy projekt przy użyciu szablonu ASP.NET Core Web App .

  3. Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę kontenerów .

    Zrzut ekranu przedstawiający pole wyboru Włącz obsługę kontenera.

    Zrzut ekranu przedstawia najnowszą wersję z platformą .NET 8.0.

  4. Wybierz odpowiedni typ kontenera (Windows lub Linux), a następnie wybierz pozycję Utwórz.

Plik Dockerfile — przegląd

Program Visual Studio tworzy plik Dockerfile w projekcie, który zawiera przepis na sposób tworzenia końcowego obrazu platformy Docker. Aby uzyskać więcej informacji, zobacz dokumentację pliku Dockerfile, aby uzyskać szczegółowe informacje o poleceniach używanych w pliku Dockerfile.

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Powyższy plik Dockerfile jest oparty na obrazie .NET 8 z katalogu kontenerów Microsoft i zawiera instrukcje dotyczące modyfikowania obrazu bazowego przez zbudowanie projektu o nazwie MyWebApp i dodanie go do kontenera. Jeśli używasz programu .NET Framework, obraz podstawowy jest inny.

Po zaznaczeniu pola wyboru Konfiguruj pod kątem protokołu HTTPS w oknie dialogowym nowego projektu plik Dockerfile uwidacznia dwa porty. Jeden port jest używany na potrzeby ruchu HTTP; drugi port jest używany dla protokołu HTTPS. Jeśli pole wyboru nie jest zaznaczone, dla ruchu HTTP jest uwidoczniony pojedynczy port (80 lub 8080).

W przypadku korzystania z platformy .NET 8 i nowszych masz korzyść z możliwości bezpiecznego uruchamiania aplikacji jako zwykły użytkownik, a nie z podwyższonymi uprawnieniami. Domyślny plik Dockerfile generowany przez program Visual Studio dla projektów platformy .NET 8 jest skonfigurowany do uruchamiania jako zwykły użytkownik. Aby włączyć to zachowanie w istniejącym projekcie, dodaj wiersz USER app do pliku Dockerfile w obrazie podstawowym. Ponadto, ponieważ port 80 jest ograniczony dla zwykłych użytkowników, uwidacznia porty 8080 i 8081 zamiast 80 i 443. Port 8080 jest używany dla ruchu HTTP, a port 8081 jest używany dla protokołu HTTPS. Aby uruchomić go jako zwykły użytkownik, kontener musi używać obrazu podstawowego platformy .NET 8, a aplikacja musi działać jako aplikacja platformy .NET 8. Po poprawnym skonfigurowaniu plik Dockerfile powinien zawierać kod, jak w poniższym przykładzie:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Domyślne szablony dla platformy .NET 8 i nowszej używają zmiennej APP_UID środowiskowej dla tożsamości normalnego użytkownika.

Debugowanie

Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji. Może zostać wyświetlony komunikat z monitem o zaufanie certyfikatowi; wybierz opcję zaufania certyfikatowi, aby kontynuować.

Opcja Narzędzia kontenera w oknie Dane wyjściowe pokazuje, jakie akcje mają miejsce. Po raz pierwszy pobranie obrazu podstawowego może zająć trochę czasu, ale jest szybsze w kolejnych uruchomieniach.

Po zakończeniu kompilacji zostanie otwarta przeglądarka i zostanie wyświetlona strona główna aplikacji. Na pasku adresu przeglądarki można zobaczyć localhost adres URL i numer portu na potrzeby debugowania.

Uwaga / Notatka

Jeśli musisz zmienić porty na potrzeby debugowania, możesz to zrobić w launchSettings.json pliku. Zobacz Ustawienia uruchamiania kontenera.

Okno kontenerów

Możesz użyć okna Kontenery , aby wyświetlić uruchomione kontenery na maszynie i inne dostępne obrazy.

Otwórz okno Kontenery przy użyciu pola wyszukiwania w środowisku IDE (naciśnij Ctrl+Q, aby go użyć), wpisz , containera następnie wybierz okno Kontenery z listy.

Okno Kontenery można zainstalować w wygodnym miejscu, takim jak poniżej edytora, przenosząc je i postępując zgodnie z przewodnikami umieszczania okien.

W oknie znajdź kontener i przejdź przez każdą kartę, aby wyświetlić zmienne środowiskowe, mapowania portów, dzienniki i system plików.

Zrzut ekranu przedstawiający okno Kontenerów.

Aby uzyskać więcej informacji, zobacz Używanie okna Kontenera.

Publikowanie obrazów platformy Docker

Po zakończeniu cyklu tworzenia i debugowania aplikacji możesz utworzyć obraz produkcyjny aplikacji.

  1. Zmień listę rozwijaną konfiguracji na Release i skompiluj aplikację.

  2. Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz polecenie Publikuj.

  3. W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Docker Container Registry.

  4. Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

    Zrzut ekranu okna dialogowego publikowania — wybierz pozycję Utwórz nowy Azure Container Registry.

  5. Wypełnij żądane wartości w obszarze Tworzenie nowego rejestru kontenerów platformy Azure.

    Ustawienia Sugerowana wartość Opis
    Prefiks DNS Nazwa unikatowa w skali globalnej Nazwa, która jednoznacznie identyfikuje rejestr kontenerów.
    Subskrypcja Wybieranie subskrypcji Subskrypcja platformy Azure, która ma być używana.
    Grupa zasobów GrupaZasobówMoja Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów. Wybierz pozycję Nowy , aby utworzyć nową grupę zasobów.
    Numer jednostki magazynowej Standard Poziom usługi rejestru kontenerów
    Lokalizacja rejestru Lokalizacja blisko ciebie Wybierz lokalizację w regionie blisko Ciebie lub w pobliżu innych usług, które mogą korzystać z rejestru kontenerów.

    Zrzut ekranu przedstawiający okno dialogowe tworzenia usługi Azure Container Registry w programie Visual Studio.

  6. Wybierz Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie z utworzoną usługą Azure Container Registry.

  7. Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.

    Zrzut ekranu przedstawiający pomyślne publikowanie.

Dalsze kroki

Teraz możesz ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy Docker, na przykład Azure Container Instances.

Dodawanie projektu do kontenera

  1. Przed utworzeniem projektu programu Visual Studio upewnij się, że program Docker Desktop uruchamia typ kontenerów (Windows lub Linux), które mają być używane w projekcie programu Visual Studio.

    Aby zmienić typ kontenera używany przez program Docker Desktop, kliknij prawym przyciskiem myszy ikonę platformy Docker (wieloryb) na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux lub Przełącz do kontenerów systemu Windows.

    Ostrzeżenie

    Jeśli zmienisz typ kontenera po utworzeniu projektu programu Visual Studio, ładowanie plików obrazów platformy Docker może zakończyć się niepowodzeniem.

  2. Utwórz nowy projekt przy użyciu szablonu ASP.NET Core Web App .

  3. Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę kontenerów .

    Zrzut ekranu przedstawiający pole wyboru Włącz obsługę kontenera.

    Zrzut ekranu przedstawia najnowszą wersję z platformą .NET 8.0.

  4. Wybierz odpowiedni typ kontenera (Windows lub Linux), a następnie wybierz pozycję Utwórz.

Plik Dockerfile — przegląd

Program Visual Studio tworzy plik Dockerfile w projekcie, który zawiera przepis na sposób tworzenia końcowego obrazu platformy Docker. Aby uzyskać więcej informacji, zobacz dokumentację pliku Dockerfile, aby uzyskać szczegółowe informacje o poleceniach używanych w pliku Dockerfile.

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Powyższy plik Dockerfile jest oparty na obrazie .NET 8 z katalogu kontenerów Microsoft i zawiera instrukcje dotyczące modyfikowania obrazu bazowego przez zbudowanie projektu o nazwie MyWebApp i dodanie go do kontenera.

Po zaznaczeniu pola wyboru Konfiguruj pod kątem protokołu HTTPS w oknie dialogowym nowego projektu plik Dockerfile uwidacznia dwa porty. Jeden port jest używany na potrzeby ruchu HTTP; drugi port jest używany dla protokołu HTTPS. Jeśli pole wyboru nie jest zaznaczone, dla ruchu HTTP jest uwidoczniony pojedynczy port (80 lub 8080).

W przypadku korzystania z platformy .NET 8 i nowszych masz korzyść z możliwości bezpiecznego uruchamiania aplikacji jako zwykły użytkownik, a nie z podwyższonymi uprawnieniami. Domyślny plik Dockerfile generowany przez program Visual Studio dla projektów platformy .NET 8 jest skonfigurowany do uruchamiania jako zwykły użytkownik. Aby włączyć to zachowanie w istniejącym projekcie, dodaj wiersz USER app do pliku Dockerfile w obrazie podstawowym. Ponadto, ponieważ port 80 jest ograniczony dla zwykłych użytkowników, uwidacznia porty 8080 i 8081 zamiast 80 i 443. Port 8080 jest używany dla ruchu HTTP, a port 8081 jest używany dla protokołu HTTPS. Aby uruchomić go jako zwykły użytkownik, kontener musi używać obrazu podstawowego platformy .NET 8, a aplikacja musi działać jako aplikacja platformy .NET 8. Po poprawnym skonfigurowaniu plik Dockerfile powinien zawierać kod, jak w poniższym przykładzie:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Szablony domyślne używają zmiennej APP_UID środowiskowej dla tożsamości normalnego użytkownika.

Debugowanie

Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji. Może zostać wyświetlony komunikat z monitem o zaufanie certyfikatowi; wybierz opcję zaufania certyfikatowi, aby kontynuować.

Opcja Narzędzia kontenera w oknie Dane wyjściowe pokazuje, jakie akcje mają miejsce. Po raz pierwszy pobranie obrazu podstawowego może zająć trochę czasu, ale jest szybsze w kolejnych uruchomieniach.

Po zakończeniu kompilacji zostanie otwarta przeglądarka i zostanie wyświetlona strona główna aplikacji. Na pasku adresu przeglądarki można zobaczyć localhost adres URL i numer portu na potrzeby debugowania.

Uwaga / Notatka

Jeśli musisz zmienić porty na potrzeby debugowania, możesz to zrobić w launchSettings.json pliku. Zobacz Ustawienia uruchamiania kontenera.

Okno kontenerów

Możesz użyć okna Kontenery , aby wyświetlić uruchomione kontenery na maszynie i inne dostępne obrazy.

Otwórz okno Kontenery przy użyciu pola wyszukiwania w środowisku IDE (naciśnij Ctrl+Q, aby go użyć), wpisz , containera następnie wybierz okno Kontenery z listy.

Okno Kontenery można zainstalować w wygodnym miejscu, takim jak poniżej edytora, przenosząc je i postępując zgodnie z przewodnikami umieszczania okien.

W oknie znajdź kontener i przejdź przez każdą kartę, aby wyświetlić zmienne środowiskowe, mapowania portów, dzienniki i system plików.

Zrzut ekranu przedstawiający okno Kontenerów.

Aby uzyskać więcej informacji, zobacz Używanie okna Kontenera.

Publikowanie obrazów platformy Docker

Po zakończeniu cyklu tworzenia i debugowania aplikacji możesz utworzyć obraz produkcyjny aplikacji.

  1. Zmień listę rozwijaną konfiguracji na Release i skompiluj aplikację.

  2. Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz polecenie Publikuj.

  3. W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Docker Container Registry.

  4. Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

    Zrzut ekranu okna dialogowego publikowania — wybierz pozycję Utwórz nowy Azure Container Registry.

  5. Wypełnij żądane wartości w obszarze Tworzenie nowego rejestru kontenerów platformy Azure.

    Ustawienia Sugerowana wartość Opis
    Prefiks DNS Nazwa unikatowa w skali globalnej Nazwa, która jednoznacznie identyfikuje rejestr kontenerów.
    Subskrypcja Wybieranie subskrypcji Subskrypcja platformy Azure, która ma być używana.
    Grupa zasobów GrupaZasobówMoja Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów. Wybierz pozycję Nowy , aby utworzyć nową grupę zasobów.
    Numer jednostki magazynowej Standard Poziom usługi rejestru kontenerów
    Lokalizacja rejestru Lokalizacja blisko ciebie Wybierz lokalizację w regionie blisko Ciebie lub w pobliżu innych usług, które mogą korzystać z rejestru kontenerów.

    Zrzut ekranu przedstawiający okno dialogowe tworzenia usługi Azure Container Registry w programie Visual Studio.

  6. Wybierz Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie z utworzoną usługą Azure Container Registry.

  7. Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.

    Zrzut ekranu przedstawiający pomyślne publikowanie.

Dalsze kroki

Teraz możesz ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy Docker, na przykład Azure Container Instances.

Dodatkowe zasoby