Fazer upgrade de contêineres para uma nova versão do sistema operacional Windows

Aplica-se a: Windows Server 2022, Windows Server 2019 e Windows Server 2016

Este tópico descreve como fazer upgrade de contêineres do Windows para uma nova versão do sistema operacional do Windows ou do Windows Server. Há duas etapas para fazer o upgrade de contêineres:

  1. Fazer upgrade do host do contêiner para a nova versão do sistema operacional.
  2. Criar instâncias de contêiner usando a nova versão do sistema operacional.

Observação

Se você só precisa atualizar (ou aplicar patch) sua imagem de contêiner do sistema operacional base do Windows atual, confira atualizar seus contêineres para obter a imagem de patch mais recente para seus contêineres.

Fazer upgrade do host do contêiner

Para fazer upgrade do host do contêiner para uma versão mais recente do Windows ou do Windows Server, você pode fazer um upgrade in-loco ou uma instalação limpa. Como o host do contêiner e os contêineres do Windows compartilham um só kernel, verifique se a versão do sistema operacional da imagem base do contêiner corresponde à do host. No entanto, você ainda pode ter uma versão mais recente do host do contêiner com uma imagem base mais antiga com o isolamento do Hyper-V. No Windows Server 2022, você pode implementar esse cenário com o isolamento de processo (em versão prévia).

Criar instâncias de contêiner usando a nova versão do sistema operacional

Para criar as instâncias de contêiner, você precisa:

  • Efetuar pull da imagem base do contêiner
  • Editar o Dockerfile para apontar para a nova imagem base
  • Compilar e executar a nova imagem do aplicativo
  • Marcar e efetuar push da imagem para o registro

Efetuar pull da imagem base do contêiner

Depois de ter efetuado pull da nova versão do sistema operacional Windows no host do contêiner, siga estas etapas para fazer upgrade da imagem base:

  1. Selecione a imagem base do contêiner para a qual deseja fazer upgrade.

  2. Abra uma sessão do PowerShell como administrador e, dependendo da versão do sistema operacional escolhida, execute o comando docker pull para efetuar pull de uma imagem:

    PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
    

    Este exemplo efetua pull da imagem base do Server Core versão 20H2.

  3. Quando o download da imagem terminar, você poderá verificar se a nova imagem foi obtida executando o comando docker images para retornar uma lista de imagens obtidas:

    docker images
    

Editar o Dockerfile para apontar para a nova imagem base

Depois, crie e inicie novas instâncias de contêiner usando a nova imagem base obtida. Para automatizar esse processo, edite o Dockerfile para redirecioná-lo para a nova imagem.

Observação

Se quiser fazer upgrade da imagem de um contêiner que estiver em execução, você precisará parar os contêineres usando docker stop e, depois, executar docker rm para remover os contêineres.

Abra o Dockerfile em um editor de texto e faça as atualizações. No exemplo a seguir, o Dockerfile é atualizado para o Server Core 20H2 com o aplicativo IIS.

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"]

Compilar e executar a nova imagem do aplicativo

Após o Dockerfile ser atualizado, você precisará compilar e executar a imagem do aplicativo.

  1. Use docker build para compilar a imagem conforme mostrado abaixo:

    docker build -t iss .
    
  2. Para executar o contêiner recém-compilado, execute o comando docker run:

    docker run -d -p 8080:80 --name iss-app iss
    

Marcar e efetuar push da imagem para o registro

Para permitir que outros hosts reutilizem a nova imagem, marque a imagem de contêiner e efetue push dela para seu registro.

  1. Use docker tag para marcar a imagem da seguinte maneira:

    docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
    
  2. Use docker push para efetuar push da imagem para o registro de contêiner da seguinte maneira:

    docker push <login-server> iss
    

Fazer upgrade de contêineres usando um orquestrador

Você também pode reimplantar seus contêineres do Windows usando um orquestrador, como o Serviço de Kubernetes do Azure e o AKS no Azure Stack HCI. O orquestrador fornece uma automação avançada para fazer isso em escala. Para obter detalhes, confira Tutorial: Atualizar um aplicativo no Serviço Kubernetes do Azure ou Tutorial: Atualizar um aplicativo no Serviço de Kubernetes do Azure no Azure Stack HCI.