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.
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:
Execute contêineres baseados em Windows ou Linux no Windows 10 para desenvolvimento e teste usando o Docker Desktop, que usa a funcionalidade de contêineres interna do Windows. Você também pode executar contêineres de forma nativa no Windows Server.
Desenvolva, teste, publique e implante contêineres baseados no Windows usando o poderoso suporte de contêiner do Visual Studio e do Visual Studio Code, que incluem suporte para Docker, Docker Compose, Kubernetes, Helm e outras tecnologias úteis.
Publique seus aplicativos como imagens de contêiner no DockerHub público para o uso de outras pessoas, ou em um Registro de Contêiner do Azure particular para o desenvolvimento e implantação da sua própria organização, enviando e extraindo diretamente de dentro do Visual Studio e Visual Studio Code.
Implante contêineres em escala no Azure ou em outras nuvens:
- Efetue pull do seu aplicativo (imagem de contêiner) por meio de um registro de contêiner, como o Registro de Contêiner do Azure, e implante-o e gerencie-o em escala usando um orquestrador como o AKS (Serviço de Kubernetes do Azure).
- O Serviço de Kubernetes do Azure implanta contêineres em máquinas virtuais do Azure e os gerencia em escala, seja com dezenas, centenas ou até mesmo milhares de contêineres. As máquinas virtuais do Azure executam uma imagem personalizada do Windows Server (ao implantar um aplicativo baseado no Windows) ou do Ubuntu Linux (ao implantar um aplicativo baseado em Linux).
Implante contêineres locais usando o AKS no Azure Stack HCI, o Azure Stack com o Mecanismo do AKS ou o Azure Stack com OpenShift. Além disso, você pode configurar o Kubernetes no Windows Server (consulte Kubernetes no Windows). Também estamos trabalhando no suporte para executar contêineres do Windows na Plataforma de Contêiner do RedHat OpenShift.
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.
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.
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:
- AKS (Serviço de Kubernetes do Azure): use um serviço gerenciado de Kubernetes do Azure
- AKS (Serviço de Kubernetes do Azure) no Azure Stack HCI: use o Serviço de Kubernetes do Azure no local
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:
Para problemas atuais e atualizações de recursos planejadas, consulte o repositório GitHub de contêineres do Windows.
Confira nosso blog: Blog de contêineres do Windows.
Para entrar em contato com a equipe de contêineres do Windows Server, envie um email para Clientes de Contêineres do Windows.