Windows e contêineres

Aplica-se a: Windows Server 2022, Windows Server 2019 e 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.

Graphic showing how containers can run in the cloud or on-premises, supporting monolithic apps or microservices written in nearly any language.

Para ver um roteiro dos recursos planejados e dos recursos disponíveis atualmente, confira o Roteiro de contêineres do Windows Server. Além disso, confira Eventos para exibir apresentações de vídeo e postagens no blog recentes para Contêineres do Windows.

O ecossistema de contêiner da Microsoft

A Microsoft fornece várias 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 construídos na parte superior do kernel do sistema operacional do host (que pode ser considerado o encanamento enterrado do sistema operacional), conforme mostrado no diagrama abaixo.

Architectural diagram showing how containers run on top of the 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 o armazenamento persistente, como um Disco do Azure ou um compartilhamento de arquivos (incluindo 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 deles é fornecida por arquivos do sistema (bibliotecas) que são executados acima do kernel no modo de usuário. Como um contêiner é isolado do ambiente do 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, que são empacotados em algo conhecido como uma imagem base. A imagem base serve como a camada básica na qual o contêiner é criado, fornecendo a ele os serviços do sistema operacional não fornecidos pelo kernel. Mas falaremos mais sobre imagens de contêiner mais tarde.

Contêineres vs. máquinas virtuais

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

Architectural diagram showing how VMs run a complete operating system beside the host operating system

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

Para obter mais detalhes sobre as semelhanças e diferenças dessas tecnologias complementares, consulte Contêineres vs. máquinas virtuais.

Imagens de contêiner

Todos os contêineres são criados 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. A imagem de contêiner consiste dos arquivos do sistema operacional do modo de usuário necessários para dar suporte ao seu aplicativo, a quaisquer runtimes ou dependências do seu aplicativo e a qualquer outro arquivo de configuração variado que seu aplicativo precise para ser executado corretamente.

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. Também inclui a maioria das funções de servidor, mas não todas, como o Servidor de Fax, que 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.

Como mencionado anteriormente, 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, você não precisa sempre direcionar uma imagem base para criar um contêiner do Windows. Em vez disso, você poderia direcionar outra imagem que já transporta 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 detalhes, consulte Imagens Base do 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.

Também é possível 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. Embora você possa gerenciar alguns contêineres manualmente usando o Docker e o Windows, os aplicativos geralmente fazem uso de cinco, dez ou até mesmo centenas de contêineres, que é onde entram os orquestradores.

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:

Para decidir quais serviços do Azure são adequados ao seu cenário, consulte serviços de contêiner do Azure e Escolhendo quais serviços do Azure devem ser usados para hospedar seu aplicativo.

Recursos

Para exibir recursos usados em contêineres do Windows Server: