핵심요약
Windows Container를 활용하면 Windows OS에 종속적인 .NET Framework 애플리케이션을 컨테이너 환경에서 실행할 수 있으며, 호스트 OS와 컨테이너 이미지 간의 호환성 문제를 Hyper-V를 통해 해결하고 컨테이너화하는 과정을 상세히 다룹니다.
Windows Container를 활용한 .NET Framework 애플리케이션 컨테이너화
Windows Container 개요 및 주요 특징
- Windows Container는 Windows 애플리케이션을 Windows Server 환경에서 격리하여 실행하는 기능으로, Windows Server 2016부터 지원됩니다.
- Linux 컨테이너와 유사하나, Windows 커널을 기반으로 동작하는 것이 특징입니다.
Windows Container 기본 이미지 및 호환성
- Microsoft에서 제공하는 4가지 기본 이미지(
Nano Server,Server Core,Windows,Windows Server)를 통해 빌드가 가능하며, 각 이미지의 기능 포함 여부와 크기가 다릅니다. - 호환성은 Windows Container의 중요한 특이점으로, Host 서버의 Windows OS 버전과 Container 이미지의 커널 모드 버전이 일치하지 않으면 구동이 불가능합니다.
- 예시로,
Windows 10 Host에서는Windows Server 2022기반 이미지를 직접 실행할 수 없으며, "a Windows version ... is incompatible with a ... host" 오류가 발생합니다.
.NET Framework 애플리케이션 컨테이너 실행 과정
- .NET Framework 4.5.2 기반 ASP.NET Application을 생성하고 게시하여 배포 준비를 합니다.
- 호환성 문제 해결을 위해
Windows 10 Host위에 Hyper-V를 활용하여Windows Server 2022 가상 컴퓨터를 구축합니다. - 가상 컴퓨터 내부에 중첩 가상화를 활성화(
Set-VMProcessor -ExposeVirtualizationExtensions $true)하고,Hyper-V및ContainersWindows Feature를 설치한 후 Docker CE를 설치합니다. - 게시된 ASP.NET 애플리케이션과 Dockerfile을 사용하여 컨테이너 이미지를 빌드하고 (
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022,WORKDIR,COPY,EXPOSE 80),docker run -p 80:80 -d my-aspnet-app:latest명령으로 실행하여 웹 접근을 확인합니다.
결론 및 활용 방안
- Windows Container는 Windows OS에 종속적인 서비스를 컨테이너 환경으로 전환하는 효과적인 방법입니다.
- Dockerfile 내에서
Windows COM 모듈 설치,IIS 설정,Windows registry 설정등 필요한 작업을 정의함으로써 개발 및 운영 환경 구축 리소스를 크게 단축할 수 있습니다.