Compartilhar via


Windows e contêineres

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

Os contêineres são uma tecnologia para empacotamento e execução de aplicativos Windows e Linux em diferentes ambientes locais e na nuvem. Os contêineres fornecem um ambiente leve e isolado que torna os aplicativos mais fáceis de desenvolver, implantar e gerenciar. Os contêineres iniciam e param rapidamente, tornando-os ideais para aplicativos que precisam se adaptar rapidamente a demandas que se alteram. A natureza leve dos contêineres também os torna uma ferramenta útil para aumentar a densidade e a utilização de sua infraestrutura.

Gráfico mostrando como os contêineres podem ser executados na nuvem ou localmente, dando suporte a aplicativos monolíticos ou a microsserviços escritos em praticamente qualquer linguagem.

O ecossistema de contêiner da Microsoft

A Microsoft fornece muitas ferramentas e plataformas para ajudá-lo a desenvolver e implantar aplicativos em contêineres:

Como os contêineres funcionam

Um contêiner é um pacote leve e isolado usado para executar um aplicativo no sistema operacional do host. Os contêineres são executados sobre o kernel do sistema operacional host (que você pode considerar como a infraestrutura oculta do sistema operacional), conforme mostrado no diagrama a seguir.

Diagrama arquitetônico mostrando como os contêineres são executados na parte superior do kernel

Embora um contêiner compartilhe o kernel do sistema operacional do host, o contêiner não obtém acesso irrestrito a ele. Em vez disso, o contêiner obtém uma exibição isolada – e, em alguns casos, virtualizada – do sistema. Por exemplo, um contêiner pode acessar uma versão virtualizada do sistema de arquivos e do registro, mas todas as alterações afetam apenas o contêiner e são descartadas quando ele para. Para salvar dados, o contêiner pode montar um armazenamento persistente, como um Disco do Azure ou um compartilhamento de arquivo como Arquivos do Azure.

Um contêiner se baseia no kernel, mas o kernel não fornece todas as APIs e serviços que um aplicativo precisa executar. A maioria dessas APIs e serviços vem de arquivos do sistema (bibliotecas) executados acima do kernel no modo de usuário. Como um contêiner é isolado do ambiente de modo de usuário do host, o contêiner precisa de sua própria cópia desses arquivos do sistema de modo de usuário. Esses arquivos são empacotados em algo conhecido como uma imagem base. A imagem base serve como a camada fundamental na qual você cria seu contêiner, fornecendo-lhe serviços do sistema operacional não fornecidos pelo kernel.

Contêineres vs. máquinas virtuais

Ao contrário de um contêiner, uma VM (máquina virtual) executa um sistema operacional completo, incluindo seu próprio kernel, conforme mostrado no diagrama a seguir.

Diagrama arquitetônico mostrando como as VMs executam um sistema operacional completo ao lado do sistema operacional do host

Contêineres e máquinas virtuais têm seus usos cada um. Na verdade, muitas implantações de contêineres usam máquinas virtuais como o sistema operacional host em vez de serem executadas diretamente no hardware, especialmente ao executar contêineres na nuvem.

Para obter mais informações sobre as semelhanças e diferenças dessas tecnologias complementares, consulte Contêineres versus máquinas virtuais.

Imagens de contêiner

Você cria todos os contêineres com base em imagens de contêiner. A imagem de contêiner é um pacote de arquivos organizados em uma pilha de camadas que reside em seu computador local ou em um registro de contêiner remoto. Uma imagem de contêiner consiste nos arquivos do sistema operacional do modo de usuário que seu aplicativo precisa executar. A imagem também inclui os runtimes, dependências e quaisquer arquivos de configuração que seu aplicativo necessita.

A Microsoft oferece várias imagens (chamadas de imagens base) que você pode usar como um ponto de partida para criar sua própria imagem de contêiner:

  • Windows: contém o conjunto completo de APIs do Windows e serviços do sistema (menos funções de servidor).
  • Windows Server: contém o conjunto completo de APIs do Windows e serviços do sistema.
  • Windows Server Core: uma imagem menor que contém um subconjunto das APIs do Windows Server, ou seja, o .NET Framework completo. Ele também inclui a maioria, mas nem todas as funções de servidor (por exemplo, o Servidor de Fax não está incluído).
  • Nano Server: a menor imagem do Windows Server, com suporte para as APIs do .NET Core e algumas funções de servidor.

As imagens de contêiner são compostas por uma série de camadas. Cada camada contém um conjunto de arquivos que, quando sobrepostos, representam a imagem de contêiner. Devido à natureza em camadas dos contêineres, nem sempre é necessário especificar uma imagem base para construir um contêiner Windows. Em vez disso, você pode direcionar para outra imagem que já carrega a estrutura desejada. Por exemplo, a equipe do .NET publica uma imagem do .NET Core que carrega o runtime do .NET Core. Ela evita que os usuários precisem duplicar o processo de instalação do .NET Core – em vez disso, eles podem reutilizar as camadas dessa imagem de contêiner. A própria imagem do .NET Core é criada com base no Nano Server.

Para obter mais informações, consulte Imagens base de contêiner.

Usuários do contêiner

Contêineres para desenvolvedores

Os contêineres ajudam os desenvolvedores a criar e enviar aplicativos de alta qualidade com mais rapidez. Com contêineres, os desenvolvedores podem criar uma imagem de contêiner que é implantada em segundos, de forma idêntica entre os ambientes. Os contêineres atuam como um mecanismo fácil para compartilhar código entre as equipes e para inicializar um ambiente de desenvolvimento sem afetar o sistema de arquivos do host.

Os contêineres são portáteis e versáteis, podem executar aplicativos escritos em qualquer linguagem e são compatíveis com qualquer computador que esteja executando o Windows 10 versão 1607 ou posterior ou o Windows Server 2016 ou posterior. Os desenvolvedores podem criar e testar um contêiner localmente em seu laptop ou desktop e, em seguida, implantar essa mesma imagem de contêiner na nuvem privada, na nuvem pública ou no provedor de serviços da empresa. A agilidade natural dos contêineres dá suporte a padrões de desenvolvimento de aplicativos modernos em ambientes de nuvem virtualizados em larga escala. O benefício mais útil para os desenvolvedores talvez seja a capacidade de isolar o ambiente para que o aplicativo sempre obtenha a versão das bibliotecas especificadas, evitando conflitos com dependências.

Contêineres para profissionais de TI

Os contêineres ajudam os administradores a criar uma infraestrutura mais fácil de atualizar e de manter, e que utiliza os recursos de hardware de forma mais completa. Os profissionais de TI podem usar contêineres para fornecer ambientes padronizados para suas equipes de desenvolvimento, garantia de qualidade e produção. Ao usar contêineres, os administradores de sistemas afastam as diferenças em instalações do sistema operacional e da infraestrutura subjacente.

Você também pode usar o modo interativo de contêineres para executar instâncias conflitantes de uma ferramenta de linha de comando no mesmo sistema.

Orquestração de contêineres

Orquestradores são uma parte essencial da infraestrutura ao configurar um ambiente baseado em contêiner. Orquestradores são essenciais ao gerenciar aplicativos em contêineres em escala. Embora você possa gerenciar alguns contêineres manualmente usando o Docker e o Windows, os aplicativos geralmente usam cinco, dez ou até centenas de contêineres, tornando os orquestradores indispensáveis.

Os orquestradores de contêiner foram criados para ajudar a gerenciar contêineres em escala e em produção. Os orquestradores fornecem funcionalidade para:

Os orquestradores ajudam você a desenvolver aplicativos em contêineres em escala, fornecendo uma funcionalidade para:

  • Implantação em escala
  • Agendamento de carga de trabalho
  • Monitoramento de integridade
  • Execução de failover quando um nó falha
  • Dimensionamento para cima ou para baixo
  • Rede
  • Descoberta de serviço
  • Coordenação de atualizações de aplicativo
  • Afinidade de nó de cluster

Há muitos orquestradores diferentes que você pode usar com contêineres do Windows; aqui estão as opções que a Microsoft fornece:

Experimente contêineres no Windows

Para começar a usar contêineres no Windows Server ou no Windows 10, consulte o seguinte artigo:

Para obter ajuda para decidir quais serviços do Azure são adequados para seu cenário, consulte os serviços de contêiner do Azure e escolher quais serviços do Azure usar para hospedar seu aplicativo.

Recursos

Para exibir recursos para usar contêineres do Windows Server, consulte os seguintes recursos: