AI Briefing

Windows Container 살펴보기

·2024.12.11 16:40

Windows 전용 앱을 Windows Container로 격리 실행하는 방법과 호환성 제약을 정리했다.

Windows Container는 Windows 애플리케이션Windows Server 환경에서 격리 실행하기 위한 기능이며, Windows Server 2016부터 지원된다. Linux Container와 비슷하게 독립 실행 환경을 제공하지만, 내부적으로는 Windows 커널을 기반으로 동작한다.

기본 이미지는 Microsoft가 제공하는 4가지 유형으로 나뉜다. 포함 기능이 많을수록 이미지 크기도 커지며, Microsoft는 대부분의 사용자에게 Windows Server CoreNanoserver를 권장한다.

  • Nano Server: 약 300MB
  • Server Core: 약 5GB
  • Windows: 약 9GB, **Windows Server 2019(ltsc2019)**까지만 지원
  • Windows Server: 약 10GB, **Windows Server 2022(ltsc2022)**부터 지원

가장 중요한 제약은 호환성이다. Windows는 Linux와 달리 사용자 모드와 커널 모드가 강하게 결합돼 있어, Host OS 버전에 따라 특정 Windows Container 이미지를 실행하지 못할 수 있다. 예를 들어 Windows 10에서는 Windows Server 2022 이미지를 직접 구동할 수 없고, 실제로는 docker: a Windows version 10.0.20348-based image is incompatible with a 10.0.19043 host. 오류가 발생한다.

예제로는 .NET Framework 4.5.2 기반 ASP.NET 애플리케이션을 Windows Container로 실행하는 과정을 보여준다. 먼저 애플리케이션을 게시한 뒤, Windows 10 Host에서는 바로 실행하지 않고 Hyper-VWindows Server 2022 가상 컴퓨터를 만든 다음 그 위에서 Container를 구동한다.

구성 순서는 다음과 같다.

  • Windows Server 2022 평가판 ISO를 내려받아 Hyper-V 가상 컴퓨터를 생성
  • Set-VMProcessor -VMName "windows-server-2022" -ExposeVirtualizationExtensions $true중첩 가상화 설정
  • Install-WindowsFeature -Name Hyper-V, Install-WindowsFeature -Name Containers로 필요한 Windows Feature 추가
  • Windows Server용 Docker CE 설치
  • 게시한 ASP.NET 결과물을 복사한 뒤, mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022 이미지를 기반으로 Dockerfile 작성
  • docker build -t my-aspnet-app .로 빌드하고 docker run -p 80:80 -d my-aspnet-app:latest로 실행

마무리로, Windows Container는 Linux Container보다 아직 제약이 있지만 Windows를 벗어날 수 없는 서비스에는 현실적인 대안이 될 수 있다고 정리한다. 특히 COM 모듈, IIS 설정, Windows registry 같은 실행 전 작업을 Dockerfile에 미리 넣을 수 있다면, Windows 개발·운영 환경 구축과 관리 비용을 크게 줄일 수 있다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.