Olá Pessoal!
No artigo publicado no dia 08/11/2016 – Windows Server 2016 Containers: Implantação e Configuração abordei de forma bem generalista o que são containers e como os mesmos se diferenciam de máquinas virtuais tradicionais (baseadas em hypervisor), terminei o artigo com um exemplo prático de instalação/configuração de um container executando o IIS (Internet Information Services). Nesse artigo apresento e discuto uma outra novidade do Windows Server 2016 – Hyper-V Containers.
Saiba mais sobre as mudanças no licenciamento do Windows Server.
Containers
Se você leu o artigo anterior, deve se lembrar que containers é a implantação da virtualização baseada em sistema operacional, criação de mais de um User Mode dentro do mesmo Kernel Mode, o que o que garante isolamento e uma visão exclusiva dos recursos de hardware, mesmo compartilhando um núcleo comum (Figura 1).
Observando a Figura 1, fica bem claro que se o núcleo do sistema for comprometido, todos os containers em execução também serão. Para resolver esse problema, a Microsoft parte para uma segunda abordagem: Hyper-V Containers – Implantação de um Kernel Mode individual dentro de uma máquina virtual otimizada para hospedagem de containers (Figura 2).
Com tais conceitos já revistos, vamos para a implantação prática. No meu cenário irei executar um container baseado em Hyper-V em uma máquina virtual do Windows Server 2016, uma vez que o Hyper-V é pré-requisito para implantação de Hyper-V Containers, é necessário habilitar a virtualização aninhada (Nested Virtualization) na máquina virtual do Windows Server 2016, para isso, siga os procedimentos apresentados na publicação do dia 22/11/2016 – Windows Server 2016 Nested Virtualization. Após a instalação do Hyper-V na máquina virtual, instale o recurso de containers (item 1 e 2 desse artigo).
1. Executar um container isolado pelo Hyper-V:
Execute a imagem anteriormente baixada (nesse ponto o container é realmente colocado em execução). O parâmetro “-it” significa que iremos conectar ao container de maneira interativa, executando o Windows PowerShell. O Parâmetro “–isolation=hyperv” garante o isolamento do Kernel Mode pelo Hyper-V“, já o parâmetro -p 80:80” redireciona o tráfego para porta 80 do container:
Execute a instalação do IIS:
Por padrão, todo container é conectado a rede 172.16.0.0/12 que está vinculada a um switch virtual do tipo NAT. Com isso, o container consegue interagir com o host e acessar a Internet de forma transparente:
A partir do host, acesse o site padrão do IIS hospedado dentro do container:
Esse foi um exemplo prático de como isolar um container do Windows Server por meio do Hyper-V. Tal prática garante maior segurança para o container em execução, uma vez que o mesmo utiliza um Kernel Mode individual.
Até a próxima!