컨테이너를 새 버전의 Windows 운영 체제로 업그레이드
적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016
이 항목에서는 Windows 컨테이너를 새 Windows 또는 Windows Server 운영 체제 버전으로 업그레이드하는 방법에 대해 설명합니다. 컨테이너 업그레이드에는 다음의 두 단계가 있습니다.
- 컨테이너 호스트를 새 운영 체제 버전으로 업그레이드.
- 새 운영 체제 버전을 사용하여 새 컨테이너 인스턴스 만들기.
참고
현재 Windows 기본 OS 컨테이너 이미지를 업데이트(또는 패치)해야 하는 경우 컨테이너 업데이트를 참조하여 컨테이너의 최신 패치 이미지를 가져오세요.
컨테이너 호스트 업그레이드
컨테이너 호스트를 최신 Windows 또는 Windows Server 버전으로 업그레이드하려면 현재 위치 업그레이드 또는 새로 설치를 수행할 수 있습니다. 컨테이너 호스트와 Windows 컨테이너는 단일 커널을 공유하므로 컨테이너의 기본 이미지 OS 버전이 호스트의 OS 버전과 일치하는지 확인해야 합니다. 그러나 Hyper-V 격리가 있는 이전 기본 이미지와 함께 최신 버전의 컨테이너 호스트를 계속 사용할 수 있습니다. Windows Server 2022에서는 프로세스 격리(미리 보기)를 사용하여 이 시나리오를 구현할 수 있습니다.
새 OS 버전을 사용하여 새 컨테이너 인스턴스 만들기
새 컨테이너 인스턴스를 만들려면 다음을 수행해야 합니다.
- 컨테이너 기본 이미지 끌어오기
- 새 기본 이미지를 가리키도록 Dockerfile 편집
- 새 앱 이미지 빌드 및 실행
- 레지스트리에 이미지 태그 지정 및 푸시
컨테이너 기본 이미지 끌어오기
컨테이너 호스트에서 새 Windows OS 버전을 가져온 후 아래 단계에 따라 기본 이미지를 업그레이드합니다.
업그레이드할 컨테이너 기본 이미지를 선택합니다.
PowerShell 세션을 관리자로 열고 선택한 OS 버전에 따라 docker pull 명령을 실행하여 이미지를 끌어옵니다.
PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
이 예에서는 Server Core 버전 20H2 기본 이미지를 끌어옵니다.
이미지 다운로드가 완료되면 docker images 명령을 실행하여 끌어온 이미지 목록을 반환하여 새 이미지를 끌어왔는지 확인할 수 있습니다.
docker images
새 기본 이미지를 가리키도록 Dockerfile 편집
다음으로, 끌어온 새 기본 이미지를 사용하여 새 컨테이너 인스턴스를 만들고 시작하려고 합니다. 이 프로세스를 자동화하려면 Dockerfile을 편집하여 새 이미지로 리디렉션합니다.
참고
현재 실행 중인 컨테이너의 이미지를 업그레이드하려면 docker stop을 사용하여 컨테이너를 중지한 다음, docker rm을 실행하여 컨테이너를 제거해야 합니다.
텍스트 편집기에서 Dockerfile을 열고 업데이트합니다. 다음 예에서 Dockerfile은 IIS 애플리케이션을 사용하여 Server Core 20H2로 업데이트됩니다.
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN PowerShell Install-WindowsFeature NET-Framework-45-ASPNET
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["ServiceMonitor.exe", "w3svc"]
새 앱 이미지 빌드 및 실행
Dockerfile이 업데이트되면 앱 이미지를 빌드하고 실행해야 합니다.
아래와 같이 docker build를 사용하여 이미지를 빌드합니다.
docker build -t iss .
새로 빌드된 컨테이너를 실행하려면 docker run 명령을 실행합니다.
docker run -d -p 8080:80 --name iss-app iss
레지스트리에 이미지 태그 지정 및 푸시
다른 호스트에서 새 이미지를 다시 사용할 수 있도록 하려면 태그를 지정한 다음, 컨테이너 이미지를 레지스트리에 푸시해야 합니다.
다음과 같이 docker tag를 사용하여 이미지에 태그를 지정합니다.
docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
다음과 같이 docker push를 사용하여 컨테이너 레지스트리에 이미지를 푸시합니다.
docker push <login-server> iss
오케스트레이터를 사용하여 컨테이너 업그레이드
Azure Kubernetes Service 및 Azure Stack HCI의 AKS와 같은 오케스트레이터를 사용하여 Windows 컨테이너를 다시 배포할 수도 있습니다. 오케스트레이터는 이 작업을 대규모로 수행할 수 있는 강력한 자동화 기능을 제공합니다. 자세한 내용은 자습서: Azure Kubernetes Service에서 애플리케이션 업데이트 또는 자습서: Azure Stack HCI의 Azure Kubernetes Service에서 애플리케이션 업데이트를 참조하세요.