Requisitos do contêiner do Windows

Esse guia lista os requisitos para um host do contêiner do Windows.

Requisitos de sistema operacional

  • O recurso de contêiner do Windows está disponível apenas no Windows Server 1709, Windows Server 2016 (Core e com Experiência Desktop) e Windows 10 Professional e Enterprise (Edição de Aniversário).
  • A função Hyper-V deve ser instalada antes da execução dos contêineres do Hyper-V
  • Os hosts de contêiner do Windows Server devem ter o Windows instalado na unidade c:. Essa restrição não se aplicará se apenas os contêineres do Hyper-V forem ser implantados.

Hosts de contêiner virtualizados

Se um host do contêiner do Windows for executado em uma máquina virtual do Hyper-V e também estiver hospedando contêineres do Hyper-V, a virtualização aninhada precisará ser habilitada. A virtualização aninhada tem os seguintes requisitos:

  • Pelo menos 4 GB de RAM disponíveis para o host Hyper-V virtualizado.
  • Windows Server 1709, Windows Server 2016 ou Windows 10 no sistema host e Windows Server (Full, Core) na máquina virtual.
  • Um processador com Intel VT-x (este recurso está apenas disponível para os processadores Intel).
  • A VM do host do contêiner também precisa de pelo menos dois processadores virtuais.

Imagens base com suporte

Os Contêineres do Windows são oferecidos com duas imagens base do contêiner: Windows Server Core e Nano Server. Nem todas as configurações têm suporte para ambas as imagens do SO. Esta tabela fornece detalhes sobre as configurações com suporte.

Sistema Operacional do Host
Contêiner do Windows Server
Contêiner do Hyper-V
Windows Server 2016 (Standard ou Datacenter)
Server Core/Nano Server
Server Core/Nano Server
Nano Server*
Nano Server
Server Core/Nano Server
Windows 10 Pro/Enterprise
Não disponível
Server Core/Nano Server

  • A partir do Windows Server, versão 1709, o Nano Server não está mais disponível como host de contêiner.

Requisitos de memória

Restrições de memória disponível para contêineres podem ser configuradas pelos controles de recursos ou pela sobrecarga em um host de contêiner. A quantidade mínima de memória necessária para iniciar um contêiner e executar os comandos básicos (ipconfig, dir, etc.) está listada abaixo. Observe que esses valores não levam em conta o compartilhamento de recursos entre contêineres ou os requisitos do aplicativo em execução no contêiner.

Windows Server 2016

Imagem base Contêiner do Windows Server Isolamento do Hyper-V
Nano Server 40 MB 130 MB + arquivo de paginação de 1 GB
Server Core 50 MB 325 MB + arquivo de paginação de 1 GB

Windows Server, versão 1709

Imagem base Contêiner do Windows Server Isolamento do Hyper-V
Nano Server 30 MB 110 MB + arquivo de paginação de 1 GB
Server Core 45 MB 360 MB + arquivo de paginação de 1 GB

Nano Server vs. Windows Server Core

Como escolher entre o Windows Server Core e o Nano Server? Você pode criar com o que preferir, mas se achar que seu aplicativo precisa de compatibilidade total com o .NET Framework, então você deve usar o Windows Server Core. Por outro lado, se o seu aplicativo foi criado para a nuvem e usa o .NET Core, você deve usar o Nano Server. Isso porque o Nano Server foi criado com a intenção de ter o menor volume possível, portanto, várias bibliotecas não essenciais foram removidas. Se você estiver pensando em criar com base no Nano Server, é importante lembrar que:

  • A pilha de atendimento foi removida
  • O .NET Core não está incluso (mas você pode usar a imagem do .NET Core Nano Server)
  • O PowerShell foi removido
  • A WMI foi removida

Essas são as maiores diferenças e não uma lista completa. Há outros componentes não listados que também estão ausentes. Lembre-se de que você sempre pode adicionar camadas no topo do Nano Server conforme desejar. Para ver um exemplo disso, confira o Dockerfile do .NET Core Nano Server.

Correspondendo a versão de Host do contêiner com versões de imagem de contêiner

Contêineres do Windows Server

Como os contêineres do Windows Server e o host subjacente compartilham um único núcleo, a imagem de base do contêiner deve corresponder à do host. Se as versões forem diferentes, o contêiner pode iniciar, mas a funcionalidade completa não será garantida. Portanto, versões incompatíveis não têm suporte. O sistema operacional Windows tem 4 níveis de controle de versão, principal, secundário, compilação e revisão – por exemplo, 10.0.14393.0. O número de build é alterado apenas quando novas versões do sistema operacional são publicadas. O número de revisão é atualizado conforme as atualizações do Windows são aplicadas. Os contêineres do Windows Server são bloqueados ao iniciar quando o número de build é diferente – por exemplo, 10.0.14300.1030 (Technical Preview 5) e 10.0.14393 (Windows Server 2016 RTM). Se o número de build corresponde mas o número de revisão é diferente, não haverá bloqueio ao iniciar – por exemplo, 10.0.14393 (Windows Server 2016 RTM) e 10.0.14393.206 (Windows Server 2016 GA). Mesmo que eles não sejam bloqueados tecnicamente, essa é uma configuração que pode não funcionar corretamente em todas as circunstâncias e, portanto, não têm suporte para ambientes de produção.

Para saber qual versão de um host do Windows está instalada, você pode consultar HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion. Para saber qual versão está sendo usada pela imagem de base, você pode examinar as marcas no hub do Docker ou a tabela de hash de imagem fornecida na descrição da imagem. O histórico de atualização do Windows 10 indica quando cada build e cada revisão foi lançada.

Neste exemplo, 14393 é o número de build principal e 321 é o número de revisão.

Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\').BuildLabEx
14393.321.amd64fre.rs1_release_inmarket.161004-2338

Isolamento do Hyper-V para contêineres

Os Contêineres do Windows podem ser executados com ou sem o isolamento do Hyper-V. O isolamento do Hyper-V cria um limite seguro em torno do contêiner com uma VM otimizada. Ao contrário dos Contêineres do Windows padrão, que compartilham o kernel entre os contêineres e o host, cada contêiner isolado do Hyper-V tem sua própria instância do kernel do Windows. Por isso, você pode ter diferentes versões do sistema operacional no host do contêiner e na imagem (veja abaixo da matriz de compatibilidade).

Para executar um contêiner com isolamento do Hyper-V, basta adicionar a marca "--isolation=hyper-v" ao seu comando docker run.

Matriz de compatibilidade

As compilações do Windows Server após a 2016 GA (10.0.14393.206) podem executar as imagens do Windows Server 2016 GA do Server Core do Windows ou do Nano Server em uma configuração com suporte, independentemente do número de revisão.

É importante entender que para obter a funcionalidade completa, confiabilidade e garantias de segurança fornecidas com as atualizações do Windows, você deve manter as versões mais recentes em todos os sistemas.