Contêineres e o Windows Server 2016
Autor: Eduardo Popovici | Publicado: 2017-08-08T18:53:00-03:00









Cada vez mais as inovações tecnológicas permitem que a TI efetue suas atividades de forma mais competente com menos recursos e de maneira mais segura. Uma destas inovações tecnológicas ganhou força em ambientes Microsoft com o Windows Server 2016 e tende a se popularizar cada vez mais. O contêineres são velhos conhecidos do universo Open Source e podem proporcionar grande economia com mais segurança aos ambientes tecnológicos.



Os contêineres são na verdade uma maneira não exatamente nova, mas bem interessante de encerrar um aplicativo em sua própria caixa isolada. Para a aplicação em seu contêineres, não possui conhecimento de nenhum outro aplicativo ou processo que exista fora de sua caixa. Tudo o que o aplicativo depende para executar com sucesso também vive dentro desse recipiente. Onde quer que a caixa possa se mover, o aplicativo sempre funcionará de forma satisfatória pois está empacotado com tudo o que precisa para ser executado.



Imagine uma cozinha onde nós embalamos todos os aparelhos e móveis, as panelas e frigideiras, o sabão e toalhas de mão. Este é o nosso contêiner. Agora podemos pegar esse contêineres e colocá-lo em qualquer apartamento que desejamos, e será a mesma cozinha. Tudo o que devemos fazer é conectar a eletricidade e a água, e então estamos prontos para começar a cozinhar (porque temos todos os aparelhos que precisamos!). Da mesma forma, os contêineres são como essa cozinha. Pode haver diferentes tipos de quartos, bem como muitos dos mesmos tipos de quartos, mas o que importa realmente é que os contêineres sejam embalados com tudo o que eles precisam.



Os contêineres são um ambiente de tempo de execução isolado, com recursos controlados e de formato portátil que são executado em uma máquina host ou máquina virtual. Um aplicativo ou processo que é executado em um contêineres é empacotado com todas as dependências e arquivos de configuração necessários; Dá a ilusão de que não existem outros processos que se estendam fora de seu contêineres. O hospedeiro do recipiente fornece um conjunto de recursos para o contêineres que fará uso apenas desses recursos. No que diz respeito ao contêineres, nenhum outro recurso existe fora do que foi dado e, portanto, não pode tocar recursos que possam ter sido provisionados para um contêineres vizinho.









Com relação à virtualização, a diferença está no fato dos contêineres não precisarem de uma camada de sistema operacional para cada. Ao compararmos a tecnologia de contêineres com a virtualização tradicional, fica mais claro que uma aplicação sendo executada em um ambiente isolado demanda muito menos recursos, consumindo menos espaço em disco e com um nível de portabilidade difícil de ser alcançado por outras plataformas. Tais características tornaram os contêiner uma ferramenta poderosa para criação e teste de aplicações por desenvolvedores, conquistando também os administradores de redes e arquitetos de soluções pela facilidade de implementar as aplicações “empacotadas” nesse modelo de virtualização.



O conceito que fundamenta toda a tecnologia relacionada a conteinerização é na verdade bem simples e bem antigo. Seu nascimento e evolução é mais notório em sistemas Unix e Linux. O comando chroot, precursor dos contêineres foi lançado em 1979 pelo Unix V7 com o intuito de segregar acessos de diretórios e evitar que o usuário pudesse ter acesso à estrutura raiz (“/” ou root). Esse conceito evoluiu alguns anos mais tarde com o lançamento do comando jail, no sistema operacional FreeBSD 4.&nbsp;



Os seguintes conceitos-chave serão úteis à medida que você começar a criar e trabalhar com contêineres no Windows.









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



Imagem do recipiente: como as modificações são feitas em um sistema de arquivos de contêineres ou em um registro, como na instalação do software, eles são capturados em uma caixa de areia. Em muitos casos, você pode querer capturar este estado, de modo que possam ser criados novos contêineres&nbsp;&nbsp;que herdam essas alterações. Isso é o que uma imagem é - uma vez que o contêineres&nbsp;&nbsp;parou, você pode descartar essa sandbox ou pode convertê-la em uma nova imagem de contêiner. Por exemplo, vamos imaginar que você implantou um contêineres&nbsp;da imagem do Windows Server Core. Em seguida, instale o MySQL neste contêineres. Criar uma nova imagem desse contêiner seria uma versão implementável do contêiner. Esta imagem só conteria as alterações feitas (MySQL), no entanto, funcionaria como uma camada em cima da Imagem do Sistema de Contêiner.



Sandbox: uma vez que um recipiente foi iniciado, todas as ações de gravação, como modificações no sistema de arquivos, modificações de registro ou instalações de software, são capturadas nesta camada 'sandbox'.



Imagem do sistema operacional do contentor: os recipientes são implantados a partir de imagens. A imagem do SO do recipiente é a primeira camada em potencialmente muitas camadas de imagem que compõem um recipiente. Esta imagem fornece o ambiente do sistema operacional. Uma imagem do sistema operacional do contêiner é imutável. Ou seja, não pode ser modificado.



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



O Windows Server Containers - fornecem isolamento de aplicativos através de tecnologia de isolamento de processo e nome. O Windows Server Container compartilha um kernel com o host de contêiner e todos os recipientes que estão sendo executados no host. Esses recipientes não fornecem um limite de segurança hostil e não devem ser usados ​​para isolar o código não confiável. Por causa do espaço compartilhado do kernel, esses recipientes exigem a mesma versão e configuração do kernel.



Isolamento Hyper-V - expande o isolamento fornecido pelo Windows Server Contêineres executando cada contêiner em uma máquina virtual altamente otimizada. Nessa configuração, o kernel do host do recipiente não é compartilhado com outros recipientes no mesmo host. Esses recipientes são projetados para hospedagem multitenante hostil com as mesmas garantias de segurança de uma máquina virtual. Uma vez que esses recipientes não compartilham o kernel com o host ou outros recipientes no host, eles podem executar kernels com diferentes versões e configurações (com versões suportadas) - por exemplo, todos os recipientes do Windows no Windows 10 usam o isolamento Hyper-V para utilizar o Versão e configuração do kernel do Windows Server.



A execução de um recipiente no Windows com ou sem Isolamento Hyper-V é uma decisão de tempo de execução. Você pode optar por criar o contêiner com o isolamento do Hyper-V inicialmente e depois, no tempo de execução, optar por executá-lo em vez disso como um recipiente do Windows Server.



Leitura complementar:



1. http://techfree.com.br/2015/11/container-vs-maquina-virtual/&nbsp;

2. http://www.sinestec.com.br/blog/o-que-e-container-docker/&nbsp;

3. http://www.junipernetworks.com.br/container-uma-nova-tecnologia

4. https://www.ibm.com/developerworks/community/blogs/tlcbr/entry/mp234?lang=en