Contêineres do Windows

Este é um conteúdo preliminar, estando sujeito a alterações.

O que são Contêineres

Assista a uma breve visão geral: Windows-based containers: Modern app development with enterprise-grade control (Contêineres baseados em Windows: desenvolvimento de aplicativos modernos com controle de nível empresarial).

Contêineres são um ambiente operacional isolado, portátil e controlado por recursos.

Basicamente, um contêiner é um lugar isolado onde um aplicativo pode ser executado sem afetar os recursos (memória, disco, rede, etc.) de outros contêineres ou o host.

Um contêiner parece e age como um computador físico recém-instalado ou uma máquina virtual. Um Contêiner do Windows Server pode ser gerenciado com o Docker como qualquer outro contêiner.

Tipos de Contêiner do Windows

Contêineres do Windows incluem dois tipos diferentes de contêiner ou tempos de execução.

Contêineres do Windows Server: fornecem isolamento de aplicativos por meio da tecnologia de isolamento de processo e de namespace. Um contêiner do Windows Server compartilha um kernel com o host do contêiner e com todos os contêineres em execução no host. Esses contêineres não fornecem um limite de segurança hostil e não devem ser usados para isolar código não confiável. Esses contêineres compartilham o espaço de kernel com o host e os outros contêineres no mesmo host, portanto, o kernel precisa ser consistente, ou seja, a mesma versão e configuração.

Isolamento do Hyper-V: expande o isolamento fornecido pelos contêineres do Windows Server executando cada contêiner em uma máquina virtual altamente otimizada. Nessa configuração, o kernel do host do contêiner não é compartilhado com outros contêineres no mesmo host. Esses contêineres são projetados para hospedagem multilocatário hostil com as mesmas garantias de segurança de uma máquina virtual. Como esses contêineres não compartilham o kernel com o host ou outros contêineres no host, eles podem executar kernels com diferentes versões e configurações (em versões compatíveis). Por exemplo, todos os contêineres do Windows no Windows 10 usam isolamento do Hyper-V para utilizar a versão de kernel do Windows Server e a configuração.

Conceitos básicos de Contêiner

Quando você começar a trabalhar com contêineres, poderá observar muitas semelhanças entre um contêiner e uma máquina virtual. Um contêiner executa um sistema operacional, tem um sistema de arquivos e pode ser acessado por meio de uma rede como se fosse um sistema de computador físico ou virtual. Dito isso, a tecnologia e os conceitos por trás de contêineres são muito diferentes das máquinas virtuais.

Esta postagem de blog de Mark Russinovich explica bem os contêineres.

Os principais conceitos a seguir poderão ser úteis quando você começar a criar e trabalhar com Contêineres do Windows.

Host do contêiner: sistema de computador físico ou virtual configurado com o recurso de contêiner do Windows. O host do contêiner executará um ou mais Contêineres do Windows.

Imagem de contêiner: conforme as modificações são feitas em um sistema de arquivos ou registro de contêineres, assim como na instalação de software, elas são capturadas em uma área restrita. Em muitos casos, pode ser recomendável capturar esse estado de modo que novos contêineres podem ser criados para herdar essas alterações. É isso que é uma imagem – depois que o contêiner parar, qualquer um pode descartar essa área restrita ou você pode convertê-la em uma nova imagem de contêiner. Por exemplo, vamos imaginar que você implantou um contêiner da imagem do sistema operacional Windows Server Core. Você irá então instalar o MySQL neste contêiner. Criar uma nova imagem desse contêiner deverá atuar como uma versão implantável do contêiner. Essa imagem deve conter apenas as alterações feitas (MySQL), no entanto, pode funcionar como uma camada sobre a imagem do sistema operacional do contêiner.

Área restrita: depois de um contêiner ser iniciado, todas as ações de gravação como modificações no sistema de arquivos, modificações no Registro ou instalações de software são capturadas nesta camada de “área restrita”.

Imagem do sistema operacional do contêiner: contêineres são implantados por meio de imagens. A imagem do sistema operacional do contêiner é a primeira potencialmente de muitas camadas de imagem que compõem um contêiner. Esta imagem fornece o ambiente do sistema operacional. Uma imagem de sistema operacional do contêiner é imutável e não pode ser modificada.

Repositório de contêiner: sempre que uma imagem de contêiner for criada, a imagem de contêiner e suas dependências serão armazenadas em um repositório local. Essas imagens podem ser reutilizadas várias vezes no host do contêiner. As imagens de contêiner também podem ser armazenadas em um registro público ou privado como DockerHub para que elas possam ser usadas em vários hosts de contêiner diferentes.

Contêineres para Desenvolvedores

Desde uma área de trabalho do desenvolvedor até uma máquina de teste ou um conjunto de máquinas de produção, é possível criar uma imagem do Docker para implantação idêntica em qualquer ambiente em questão de segundos. Este artigo criou um ecossistema enorme e crescente de aplicativos empacotados em contêineres do Docker, com o DockerHub, o registro de aplicativos em contêiner público que mantém o Docker, publicando atualmente mais de 180 mil aplicativos no repositório público da comunidade.

Quando você coloca um aplicativo em um contêiner, apenas o aplicativo e os componentes necessários para executá-lo são combinados em uma “imagem”. Os contêineres são então criados usando essa imagem conforme necessário. Você também pode usar uma imagem como uma linha de base para criar uma outra, tornando ainda mais rápida a criação de imagens. Vários contêineres podem compartilhar a mesma imagem, o que significa que os contêineres iniciam rapidamente e usam menos recursos. Por exemplo, você pode usar contêineres para criar componentes de aplicativo leves e portáteis (ou “microsserviços”) para aplicativos distribuídos, além de dimensionar rapidamente cada serviço separadamente.

Como o contêiner tem tudo o que precisa para executar o aplicativo, eles são muito portáteis e podem ser executado em qualquer computador que esteja executando o Windows Server 2016. Você pode criar e testar contêineres localmente para depois implantá-lar a mesma imagem de contêiner na nuvem privada da sua empresa, em uma nuvem pública ou em um provedor de serviços. A agilidade natural dos Contêineres dá suporte a padrões de desenvolvimento de aplicativos modernos em grande escala, virtualizados e em ambientes de nuvem.

Com os contêineres, os desenvolvedores podem criar um aplicativo em qualquer linguagem. Esses aplicativos são totalmente portáteis e podem ser executado em qualquer lugar (laptop, desktop, servidor, nuvem privada, nuvem pública ou provedor de serviços) sem quaisquer alterações de código.

Contêineres ajudam os desenvolvedores a criar e fornecer aplicativos de alta qualidade com maior rapidez.

Contêineres para Profissionais de TI

Profissionais de TI podem usar contêineres para fornecer ambientes padronizados para suas equipes de produção, controle de qualidade e desenvolvimento. Eles não precisam se preocupar com as etapas complexas de instalação e configuração. Usando os contêineres, os administradores do sistema afastam as diferenças em instalações do sistema operacional e da infraestrutura subjacente.

Contêineres ajudam os administradores a criar uma infraestrutura muito mais simples de atualizar e manter.

Visão geral em Vídeo

Experimente os Contêineres do Windows Server

Introdução rápida ao contêiner