Preparar um host do Windows Server 2019 para implantação de contêiner
Observação
Para os fins deste 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 o Docker Desktop, bem como no Windows Server com o Moby ou o MCR. Ambientes com o containerd terão outras opções de CLI e os comandos serão diferentes.
O administrador do Windows Server da Contoso precisa entender e extrair as imagens base do contêiner, saber como determinar quais imagens base do contêiner estão disponíveis, quais são apropriadas para uso e como efetuar pull de imagens 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 runtime de contêiner de sua escolha, a próxima etapa é extrair uma imagem base, que é usada para fornecer uma camada fundamental de serviços de sistema operacional para o contêiner. Depois, você poderá criar e executar um contêiner de acordo com a imagem base.
Uma imagem base do contêiner inclui:
Os arquivos do sistema operacional do modo de usuário necessários para dar suporte ao aplicativo provisionado.
Quaisquer arquivos de runtime ou dependências que o aplicativo exige.
Quaisquer outros arquivos de configuração diversos de que o aplicativo precisa para realizar o provisionamento e ser executado corretamente.
A Microsoft fornece as imagens de SO base na tabela a seguir como ponto de partida para que você crie suas próprias imagens de contêiner.
Nome da imagem base | Detalhes |
---|---|
Server Core | Uma imagem que contém um subconjunto das APIs (interfaces de programação de aplicativos) do Windows Server, como o .NET Framework completo. Também inclui a maioria das funções de servidor. Essa imagem é ideal para cenários nos quais um aplicativo existente é "conteinerizado". |
Nano Server | A menor imagem do Windows Server, com suporte para as APIs do .NET e algumas funções de servidor. Essa imagem requer que o aplicativo seja escrito para Nano Server e é ideal para novos aplicativos que dependem do Windows. |
Windows | Contém o conjunto completo de APIs e serviços do sistema Windows, mas não contém funções de servidor. Esta imagem foi substituída pela imagem do Server a partir do Windows Server 2022. |
Servidor | Semelhante à imagem do Windows, essa 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 e em uma compatibilidade de aplicativo maiores. Essa imagem é ideal para cenários em que um aplicativo existente é conteinerizado, mas a imagem do Server Core não fornece as dependências necessárias para ele. |
Observação
A versão do sistema operacional do host do Windows deve corresponder à versão do sistema operacional do contêiner. Para executar um contêiner com base em um build 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 do sistema operacional mais recente, você poderá usar o modo de isolamento do Hyper-V para executar uma versão mais antiga dos contêineres do Windows.
Para saber mais sobre a compatibilidade de imagem de contêiner e host, confira Compatibilidade da versão do contêiner do Windows.
É possível localizar e baixar imagens base por meio do Registro de Contêiner da Microsoft. Use o comando docker pull para baixar uma imagem base específica.
Importante
As imagens de SO base fornecem os componentes de SO do Windows Server e as respectivas 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 do computador host. Por exemplo, para extrair uma imagem do Nano Server com base no Windows Server 2022, use o seguinte comando:
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
Para extrair uma imagem do Server Core com base no Windows Server 2019, use 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 em larga escala, você provavelmente interage com contêineres por meio de um orquestrador de contêineres, como o Kubernetes ou o Docker Swarm. Em ambientes de desenvolvimento/teste menores, é possível criar, remover e gerenciar contêineres no Windows Server por meio da CLI.
Também é possível navegar no Docker Hub ou no Registro de Contêiner da Microsoft para acessar e extrair imagens predefinidas. Há duas alternativas principais para criar uma imagem de contêiner a fim de hospedar o aplicativo:
Criar uma imagem de contêiner usando ferramentas de desenvolvedor. Quando o aplicativo está sendo escrito por um desenvolvedor, ele pode ser empacotado diretamente por meio do IDE do desenvolvedor, como o Visual Studio.
Criar 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.
Observação
Há uma opção adicional de criar imagens de contêiner com base em um contêiner em execução. Isso é semelhante à criação de uma Golden Image com base em uma VM em execução. Esse método não é recomendado. Mais detalhes serão fornecidos na próxima seção.
Automatizar a criação de imagens de contêiner usando o 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 seja possível criar imagens de contêiner manualmente, a adoção de um processo automatizado de criação de imagem fornece 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.
Observação
O Moby e o containerd não incluem uma solução de criação de imagem nativa. Como alternativa, é possível usar um serviço de criação de imagem de contêiner, como as Tarefas do ACR (Registro de Contêiner do Azure).
Os componentes do Docker que realizam 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 imagem de contêiner. Essas instruções incluem a identificação de uma imagem existente para ser usada como base, comandos a serem executados durante o processo de criação da imagem e um comando executado quando novas instâncias da imagem do contêiner são implantadas.
O comando docker build consome um dockerfile e dispara o processo de criação da imagem.
Gerenciar contêineres usando a CLI
Use os seguintes comandos para criar e gerenciar contêineres e imagens de contêiner:
- O comando docker images lista as imagens disponíveis no host do contêiner. Com isso, é possível usar imagens 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 Windows Server Core. Não especifique um modo de isolamento no comando, para que o Docker possa usar o modo padrão, que é o isolamento de processo. O parâmetro --name é usado para definir um nome para o contêiner. O -it é usado para estabelecer uma sessão interativa com o contêiner (ao contrário de -d, que realiza uma desanexação) 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 em uma nova imagem de contêiner as alterações feitas em um contêiner. A operação de commit não inclui dados contidos em volumes montados no contêiner. Por padrão, o contêiner será pausado enquanto a nova imagem de contêiner é criada: (lembre-se de que esta opção não é recomendada como melhor prática para a criação de imagens de contêiner)
docker commit
- O comando docker stop interrompe 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>
Demonstração
O vídeo abaixo demonstra como:
Instale o Docker CE/Moby no Windows Server.
Extraia uma imagem de contêiner e execute um novo contêiner interativamente.
Implante uma instância de contêiner IIS e valide a página da Web no navegador.
As principais etapas do processo são:
Instale o Docker CE/Moby no Windows Server.
Baixar uma imagem Windows Server Core que contenha IIS (Serviços de Informações da Internet). Como a versão da imagem de contêiner base deve corresponder ao host, use o contêiner iis:windowsservercore-ltsc2022.
Executar 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.
Configurar 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
- Obter a ID do contêiner usando o seguinte comando:
docker ps
- Interromper o contêiner usando o seguinte comando:
docker stop <container ID>
Revisão rápida