Preparar um host do Windows Server 2019 para implantação de contêiner

Concluído

Nota

Para este módulo do Microsoft Learn, todos os exemplos serão executados com a CLI do Docker. Esses comandos devem funcionar no Windows 10 e 11 com Docker Desktop, bem como no Windows Server com Moby ou MCR. Ambientes com containerd terão outras opções de CLI e os comandos serão diferentes.

O administrador do Windows Server da Contoso precisa entender e originar imagens de base de contêiner, como determinar quais imagens de base de contêiner estão disponíveis e apropriadas para uso e como extrair imagens de base localmente. Isso permite que o administrador crie e execute todos os contêineres necessários.

Baixar imagens baseadas em contêiner

Depois de instalar o tempo de execução do contêiner de escolha, a próxima etapa é extrair uma imagem base, que é usada para fornecer uma camada fundamental de serviços do sistema operacional para seu contêiner. Em seguida, você pode criar e executar um contêiner, que se baseia na imagem base.

Uma imagem base de contêiner inclui:

  • Os arquivos do sistema operacional de modo de usuário necessários para suportar o aplicativo provisionado.

  • Quaisquer arquivos de tempo de execução ou dependências que o aplicativo exige.

  • Quaisquer outros arquivos de configuração diversos que o aplicativo precisa provisionar e executar corretamente.

A Microsoft fornece as imagens básicas do sistema operacional na tabela a seguir como um ponto de partida para criar suas próprias imagens de contêiner.

Nome da imagem base Detalhes
Server Core Uma imagem que contém um subconjunto das interfaces de programação de aplicativos (APIs) do Windows Server, como o .NET Framework completo. Ele também inclui a maioria das funções de servidor. Esta imagem é ideal para cenários em que um aplicativo existente está sendo "conteinerizado".
Servidor Nano A menor imagem do Windows Server, com suporte para APIs .NET e algumas funções de servidor. Esta imagem requer que o aplicativo seja escrito para o Nano Server e é ideal para novos aplicativos que dependem do Windows.
Windows Contém o conjunto completo de APIs do Windows e serviços do sistema; no entanto, não contém funções de servidor. Esta imagem foi substituída pela imagem do servidor a partir do Windows Server 2022.
Servidor Semelhante à imagem do Windows, esta imagem base contém o conjunto completo de APIs do Windows Server e serviços do sistema. Isso resulta em uma imagem de contêiner maior, mas maior compatibilidade de aplicativos. Essa imagem é ideal para o cenário no qual um aplicativo existente está sendo conteinerizado, mas a imagem Server Core não fornece as dependências necessárias para o aplicativo.

Nota

A versão do sistema operacional host do Windows deve corresponder à versão do sistema operacional do contêiner. Para executar um contêiner com base em uma compilação mais recente do Windows, você precisa garantir que uma versão equivalente do sistema operacional esteja instalada no host.

Se o servidor host contiver uma versão mais recente do sistema operacional, você poderá usar o modo de isolamento do Hyper-V para executar uma versão mais antiga dos contêineres do Windows.

Para obter mais informações sobre compatibilidade de imagem de host e contêiner, confira Compatibilidade de versão de contêiner do Windows.

Pode encontrar e transferir imagens base através do Microsoft Container Registry. Use o comando docker pull para baixar uma imagem base específica.

Importante

As imagens de base do sistema operacional fornecem os componentes do sistema operacional Windows Server e suas funções de servidor. A Microsoft também fornece imagens específicas para diferentes estruturas já instaladas, como IIS, .Net Framework e .Net.

Ao inserir o comando docker pull, especifique a versão que corresponde à versão da máquina host. Por exemplo, se você quisesse extrair uma imagem do Nano Server com base no Windows Server 2022, usaria o seguinte comando:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

Se você quisesse extrair uma imagem Server Core do Windows Server 2019, usaria o seguinte comando:

docker pull mcr.microsoft.com/windows/servercore:ltsc2019

Depois de baixar as imagens base necessárias para seus contêineres, você pode verificar as imagens que estão disponíveis localmente e exibir informações de metadados digitando o seguinte comando:

docker images

Executar um contêiner do Windows

Em ambientes de produção de grande escala, você provavelmente interage com contêineres por meio de um orquestrador de contêineres, como o Kubernetes ou o Docker Swarm. Em ambientes menores e de desenvolvimento/teste, você pode criar, remover e gerenciar contêineres no Windows Server via CLI.

Você também pode navegar no Docker Hub ou no Microsoft Container Registry para acessar e extrair imagens pré-criadas. Há duas alternativas principais para criar uma imagem de contêiner para hospedar seu aplicativo:

  • Crie uma imagem de contêiner usando ferramentas de desenvolvedor. Quando o aplicativo está sendo escrito por um desenvolvedor, ele pode ser empacotado diretamente do IDE do desenvolvedor, como o Visual Studio.

  • Crie uma imagem de contêiner com um dockerfile. Um dockerfile é um documento de texto que contém todos os comandos que um usuário pode chamar na linha de comando para montar uma imagem. Ferramentas como o Visual Studio criam o dockerfile nativamente para um novo aplicativo, mas você tem a opção de criar seu próprio dockerfile manualmente.

Nota

Há uma opção adicional para criar imagens de contêiner com base em um contêiner em execução. Isso é semelhante à criação de uma imagem dourada a partir de uma VM em execução. Este método não é recomendado. Mais detalhes serão fornecidos na próxima seção.

Automatize a criação de imagens de contêiner usando dockerfile no Windows

O mecanismo Docker Desktop e o MCR incluem ferramentas para automatizar o processo de criação de imagens de contêiner. Embora você possa criar imagens de contêiner manualmente, a adoção de um processo automatizado de criação de imagens oferece muitos benefícios, incluindo:

  • A capacidade de armazenar imagens de contêiner como código.

  • A recriação rápida e precisa de imagens de contêiner para fins de manutenção e atualização.

  • Integração contínua entre imagens de contêiner e o ciclo de desenvolvimento.

Nota

Moby e containerd não incluem uma solução de compilação de imagem nativa. Como alternativa, você pode usar um serviço de compilação de imagem de contêiner, como Tarefas do Registro de Contêiner do Azure (ACR).

Os componentes do Docker que conduzem essa automação são o arquivo de texto dockerfile e o comando docker build:

  • O arquivo de texto dockerfile contém as instruções necessárias para criar uma nova imagem de contêiner. Essas instruções incluem a identificação de uma imagem existente para usar como base, comandos a serem executados durante o processo de criação da imagem e um comando que é executado quando novas instâncias da imagem de contêiner são implantadas.

  • O comando docker build consome um dockerfile e, em seguida, dispara o processo de criação de imagem.

Gerenciar contêineres usando a CLI

Use os seguintes comandos para criar e gerenciar seus contêineres e imagens de contêiner:

  • O comando docker images lista as imagens disponíveis no host do contêiner. Uma razão para fazer isso é usar imagens de contêiner existentes como base para novos contêineres:
docker images
  • O comando docker run cria um contêiner usando uma imagem de contêiner. Por exemplo, o comando a seguir cria um contêiner baseado na imagem de contêiner do Windows Server Core. Não especifique um modo de isolamento no comando, então o Docker usará o modo de isolamento padrão, que é o isolamento do processo. O parâmetro --name é usado para definir um nome para o contêiner. O -it é usado para ter uma sessão interativa com o contêiner (em oposição a -d para executar desanexado) e a instrução do PowerShell abre uma sessão do PowerShell:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
  • O comando docker commit confirma as alterações feitas em um contêiner para uma nova imagem de contêiner. A operação de confirmação não inclui dados contidos em volumes montados dentro do contêiner. Por padrão, o contêiner será pausado enquanto a nova imagem de contêiner estiver sendo criada: (lembre-se de que essa opção não é recomendada como prática recomendada para criar novas imagens de contêiner)
docker commit
  • O comando docker stop para um contêiner em execução:
docker stop <container name or ID>
  • O comando docker rm remove um ou mais contêineres:
docker rm <container name or ID>

Manifestação

O vídeo a seguir demonstra como:

  • Instale o Docker CE/Moby no Windows Server.

  • Puxe uma imagem de contêiner e execute um novo contêiner interativamente.

  • Implante uma instância de contêiner do IIS e valide a página da Web no navegador.

As principais etapas do processo são:

  1. Instale o Docker CE/Moby no Windows Server.

  2. Baixe uma imagem do Windows Server Core que contenha o IIS (Serviços de Informações da Internet). Como a versão da imagem base do contêiner deve corresponder à do host, use o contêiner iis:windowsservercore-ltsc2022.

  3. Execute o seguinte comando do Docker com estes parâmetros:

    • Execute o contêiner baixado como um serviço em segundo plano usando o parâmetro -d.

    • Configure a rede para que a porta 80 do host do contêiner seja mapeada para a porta 80 do contêiner.

Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
  1. Obtenha a ID do contêiner usando o seguinte comando:
docker ps
  1. Pare o contêiner usando o seguinte comando:
docker stop <container ID>

Revisão rápida