지원되는 Visual Studio 프로젝트 형식(예: ASP.NET 웹 프로젝트 등)에서 Docker 컨테이너에 대한 지원을 추가할 수 있습니다. Visual Studio 버전에서 지원되는 프로젝트 형식에 대한 자세한 내용은 개요 를 참조하세요.
지원되는 Visual Studio 프로젝트 형식(예: ASP.NET 웹 프로젝트 등)에서 Docker 또는 Podman 컨테이너에 대한 지원을 추가할 수 있습니다. Visual Studio 버전에서 지원되는 프로젝트 형식에 대한 자세한 내용은 개요 를 참조하세요.
필수 조건
- Docker Desktop
- ASP.NET 및 웹 개발, Azure 개발 워크로드 및/또는 .NET Core 플랫폼 간 개발 워크로드가 설치된 Visual Studio 2019 이상.
- .NET Core를 사용한 개발을 위한 .NET Core 개발 도구입니다.
- Azure Container Registry에 게시하려면 Azure 구독이 필요합니다. 무료 평가판에 등록합니다.
필수 조건
- Docker Desktop
- ASP.NET 및 웹 개발, Azure 개발 워크로드 및/또는 .NET 데스크톱 개발 워크로드가 설치된 Visual Studio.
- Azure Container Registry에 게시하려면 Azure 구독이 필요합니다. 무료 평가판에 등록합니다.
필수 조건
- Docker Desktop 또는 Podman Desktop.
- Visual Studio 또는 Podman 지원의 경우 ASP.NET 및 웹 개발, Azure 개발 워크로드 및/또는 .NET 데스크톱 개발 워크로드가 설치된 Visual Studio 2026.
- Azure Container Registry에 게시하려면 Azure 구독이 필요합니다. 무료 평가판에 등록합니다.
프로젝트를 만들 때 컨테이너 지원 추가
다음 스크린샷과 같이 새 프로젝트를 만들 때 Docker 지원 사용을 선택하여 프로젝트를 만드는 동안 컨테이너에 대한 지원을 사용하도록 설정할 수 있습니다.
다음 스크린샷과 같이 새 프로젝트를 만들 때 컨테이너 지원 사용을 선택하여 프로젝트를 만드는 동안 컨테이너에 대한 지원을 사용하도록 설정할 수 있습니다.
비고
.NET Framework 프로젝트(.NET Core 아님)의 경우 Windows 컨테이너만 사용할 수 있습니다.
비고
.NET Framework 또는 .NET Core 콘솔 프로젝트를 만들 때 Docker 지원을 추가할 수 있는 옵션은 없습니다. .NET Core 콘솔 애플리케이션 프로젝트를 만든 후 Docker 지원 추가 옵션을 사용할 수 있습니다. .NET Framework 콘솔 애플리케이션 프로젝트는 프로젝트를 만든 후 Docker 추가 지원 옵션을 지원하지 않습니다. 만든 후 .NET Framework 또는 .NET Core 콘솔 프로젝트는 Service Fabric 또는 Docker Compose를 사용하여 컨테이너 오케스트레이터 지원 추가 옵션을 지원합니다.
비고
전체 .NET Framework 콘솔 프로젝트 템플릿을 사용하는 경우 지원되는 옵션은 Service Fabric 또는 Docker Compose를 사용하는 옵션과 함께 프로젝트를 만든 후 컨테이너 오케스트레이터 지원 추가 입니다. 프로젝트 생성 시 지원 추가 및 오케스트레이션 없이 단일 프로젝트에 대한 Docker 지원 추가 옵션은 사용할 수 없습니다.
비고
.NET Framework 컨테이너에 대한 지원은 현재 버전의 Visual Studio에서 중단됩니다. .NET Framework 컨테이너는 Visual Studio 2022 17.14까지 지원되었습니다.
기존 프로젝트에 컨테이너 지원 추가
솔루션 탐색기에서 Docker 지원 추가를 선택하여 기존 프로젝트에>추가할 수 있습니다. Docker 지원 추가 > 및 컨테이너 오케스트레이터 지원 추가 > 명령은 다음 스크린샷과 같이 솔루션 탐색기의 ASP.NET Core 프로젝트에 대한 프로젝트 노드의 오른쪽 클릭 메뉴(또는 상황에 맞는 메뉴)에 있습니다.
솔루션 탐색기에서> 지원 추가를 선택하여 기존 프로젝트에 Docker 지원을 추가할 수 있습니다. 컨테이너 지원 추가 > 및 컨테이너 오케스트레이터 추가 > 지원 명령은 다음 스크린샷과 같이 솔루션 탐색기에서 ASP.NET Core 프로젝트에 대한 프로젝트 노드의 오른쪽 클릭 메뉴(또는 상황에 맞는 메뉴)에 있습니다.
Docker 지원 추가
Docker 지원을 추가하거나 사용하도록 설정하면 Visual Studio에서 프로젝트에 다음을 추가합니다.
- Dockerfile 파일
-
.dockerignore파일 - Microsoft.VisualStudio.Azure.Containers.Tools.Targets에 대한 NuGet 패키지 참조
추가하는 Dockerfile은 다음 코드와 유사합니다. 이 예제에서는 프로젝트의 이름이 지정 WebApplication-Docker되었고 Linux 컨테이너를 선택했습니다.
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]
컨테이너 빌드 유형 및 기타 옵션 선택
.NET 7 이상 프로젝트에 컨테이너 지원을 추가하거나 사용하도록 설정하면 Visual Studio에 컨테이너 스캐폴딩 옵션 대화 상자가 표시되어 운영 체제(Linux 또는 Windows)를 선택할 수 있을 뿐만 아니라 Dockerfile 또는 .NET SDK 중에서 컨테이너 빌드 유형을 선택할 수도 있습니다.
컨테이너 이미지 배포판 및 컨테이너 빌드 컨텍스트를 지정할 수도 있습니다.
컨테이너 이미지 배포판 은 컨테이너가 기본 이미지로 사용하는 OS 이미지를 지정합니다. Linux와 Windows 간에 컨테이너 유형으로 전환하면 이 목록이 변경됩니다.
다음 이미지를 사용할 수 있습니다.
Windows:
- Windows Nano Server(권장되는 8.0 이상만 사용 가능, 네이티브 AOT(Ahead-of-Time) 배포 프로젝트에는 미리 설정되지 않음)
- Windows Server Core(8.0 이상만 사용 가능)
Linux:
- 기본값(Debian이지만 태그가 대상 .NET 버전과 일치)
- 데비안
- Ubuntu
- 치즐드 우분투
- 알파인
비고
Chiseled Ubuntu 이미지를 기반으로 하고 네이티브 AOT(Ahead-of-Time) 배포 를 사용하는 컨테이너는 빠른 모드에서만 디버그할 수 있습니다. Visual Studio에서 Docker 컨테이너 사용자 지정을 참조하세요.
컨테이너 빌드 컨텍스트는 docker build에 사용되는 폴더podman build를 지정합니다.
Docker 빌드 컨텍스트 또는 Podman 빌드를 참조하세요. 기본값은 권장되는 솔루션 폴더입니다. 빌드에 필요한 모든 파일은 이 폴더 아래에 있어야 합니다. 프로젝트 폴더 또는 다른 폴더를 선택하는 경우에는 그렇지 않습니다.
Dockerfile 컨테이너 빌드 유형
Dockerfile 컨테이너 빌드 유형을 선택하면 Visual Studio에서 프로젝트에 다음을 추가합니다.
- Dockerfile 파일
-
.dockerignore파일 - Microsoft.VisualStudio.Azure.Containers.Tools.Targets에 대한 NuGet 패키지 참조
추가하는 Dockerfile은 다음 코드와 유사합니다. 이 예제에서는 프로젝트의 이름이 지정 WebApplication-Docker되었고 Linux 컨테이너를 선택했습니다.
# 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 ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.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 "./WebApplication15-AddContainerSupport.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", "WebApplication15-AddContainerSupport.dll"]
.NET SDK 컨테이너 빌드 유형
컨테이너 빌드에 대한 .NET SDK의 기본 제공 지원을 사용할 수 있습니다. 즉, Dockerfile이 필요하지 않습니다. dotnet 게시를 사용하여 .NET 앱 컨테이너화를 참조하세요. 프로젝트 파일에서 MSBuild 속성을 사용하여 컨테이너를 구성하고, Visual Studio로 컨테이너를 시작하기 위한 설정은 .json에 인코딩됩니다.
여기서는 Dockerfile 대신 .NET SDK 의 컨테이너 관리를 사용하도록 컨테이너 빌드 유형으로 .NET SDK를 선택합니다.
컨테이너 이미지 배포판 은 컨테이너가 기본 이미지로 사용하는 OS 이미지를 지정합니다. Linux와 Windows 간에 컨테이너로 전환하면 이 목록이 변경됩니다. 사용 가능한 이미지 목록은 이전 섹션을 참조하세요.
launchSettings.json .NET SDK 컨테이너 빌드 항목은 다음 코드와 같습니다.
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK는 Dockerfile에서 인코딩된 일부 설정(예: 컨테이너 기본 이미지 및 설정할 환경 변수)을 관리합니다. 컨테이너 구성을 위해 프로젝트 파일에서 사용할 수 있는 설정은 컨테이너 사용자 지정에 나열됩니다. 예를 들어 컨테이너 이미지 배포판 은 프로젝트 파일에 속성으로 ContainerBaseImage 저장됩니다. 나중에 프로젝트 파일을 편집하여 변경할 수 있습니다.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
컨테이너 빌드 유형 및 기타 옵션 선택
.NET 7 이상 프로젝트에 Docker 지원을 추가하거나 사용하도록 설정하면 Visual Studio에 컨테이너 스캐폴딩 옵션 대화 상자가 표시됩니다. 이 대화 상자에서는 운영 체제(Linux 또는 Windows)를 선택할 수 있을 뿐만 아니라 Dockerfile 또는 .NET SDK와 같은 컨테이너 빌드 유형을 선택할 수도 있습니다. 이 대화 상자는 .NET Framework 프로젝트에 표시되지 않습니다.
17.11 이상에서는 컨테이너 이미지 배포판 및 Docker 빌드 컨텍스트를 지정할 수도 있습니다.
컨테이너 이미지 배포판 은 컨테이너가 기본 이미지로 사용하는 OS 이미지를 지정합니다. Linux와 Windows 간에 컨테이너 유형으로 전환하면 이 목록이 변경됩니다.
다음 이미지를 사용할 수 있습니다.
Windows:
- Windows Nano Server(권장되는 8.0 이상만 사용 가능, 네이티브 AOT(Ahead-of-Time) 배포 프로젝트에는 미리 설정되지 않음)
- Windows Server Core(8.0 이상만 사용 가능)
Linux:
- 기본값(Debian이지만 태그는 "8.0")
- 데비안
- Ubuntu
- 치즐드 우분투
- 알파인
비고
Chiseled Ubuntu 이미지를 기반으로 하고 네이티브 AOT(Ahead-of-Time) 배포 를 사용하는 컨테이너는 빠른 모드에서만 디버그할 수 있습니다. Visual Studio에서 Docker 컨테이너 사용자 지정을 참조하세요.
Docker 빌드 컨텍스트 는 Docker 빌드에 사용되는 폴더를 지정합니다. Docker 빌드 컨텍스트를 참조하세요. 기본값은 권장되는 솔루션 폴더입니다. 빌드에 필요한 모든 파일은 이 폴더 아래에 있어야 합니다. 프로젝트 폴더 또는 다른 폴더를 선택하는 경우에는 그렇지 않습니다.
Dockerfile 컨테이너 빌드 유형
Dockerfile 컨테이너 빌드 유형을 선택하면 Visual Studio에서 프로젝트에 다음을 추가합니다.
- Dockerfile 파일
-
.dockerignore파일 - Microsoft.VisualStudio.Azure.Containers.Tools.Targets에 대한 NuGet 패키지 참조
추가하는 Dockerfile은 다음 코드와 유사합니다. 이 예제에서는 프로젝트의 이름이 지정 WebApplication-Docker되었고 Linux 컨테이너를 선택했습니다.
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]
.NET SDK 컨테이너 빌드 유형
.NET 7 SDK가 설치된 Visual Studio 2022 17.9 이상에서는 .NET 6 이상을 대상으로 하는 ASP.NET Core 프로젝트에서 컨테이너 빌드에 대해 .NET SDK의 기본 제공 지원을 사용할 수 있습니다. 즉, Dockerfile이 필요하지 않습니다. dotnet 게시를 사용하여 .NET 앱 컨테이너화를 참조하세요. 프로젝트 파일에서 MSBuild 속성을 사용하여 컨테이너를 구성하고, Visual Studio로 컨테이너를 시작하기 위한 설정은 .json에 인코딩됩니다.
여기서는 Dockerfile 대신 .NET SDK 의 컨테이너 관리를 사용하도록 컨테이너 빌드 유형으로 .NET SDK를 선택합니다.
컨테이너 이미지 배포판 은 컨테이너가 기본 이미지로 사용하는 OS 이미지를 지정합니다. Linux와 Windows 간에 컨테이너로 전환하면 이 목록이 변경됩니다. 사용 가능한 이미지 목록은 이전 섹션을 참조하세요.
launchSettings.json .NET SDK 컨테이너 빌드 항목은 다음 코드와 같습니다.
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK는 Dockerfile에서 인코딩된 일부 설정(예: 컨테이너 기본 이미지 및 설정할 환경 변수)을 관리합니다. 컨테이너 구성을 위해 프로젝트 파일에서 사용할 수 있는 설정은 컨테이너 사용자 지정에 나열됩니다. 예를 들어 컨테이너 이미지 배포판 은 프로젝트 파일에 속성으로 ContainerBaseImage 저장됩니다. 나중에 프로젝트 파일을 편집하여 변경할 수 있습니다.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
다음 단계
컨테이너 작업을 위한 Visual Studio 도구의 서비스 구현 및 사용에 대한 자세한 내용은 다음 문서를 참조하세요.
Visual Studio를 사용하여 컨테이너 레지스트리에 ASP.NET 컨테이너 배포
Visual Studio를 사용하여 Azure Container Apps에 배포