Definir os modos de isolamento e contêineres do Windows Server e do Hyper-V
O administrador do Windows Server da Contoso precisa entender como os contêineres são executados no Windows Server e como o isolamento de ambientes de runtime é alcançado, principalmente os modos de isolamento de processo e isolamento do Hyper-V. O administrador também precisa entender como executar diferentes modos de isolamento e em que circunstâncias esses diferentes modos são apropriados ou necessários.
Modos de isolamento
O Windows Server pode executar contêineres em um dos dois modos de isolamento distintos. Ambos os modos dão suporte a processos idênticos para criar, gerenciar e executar contêineres. No entanto, há uma diferença entre o grau de isolamento fornecido para o contêiner e, consequentemente, para a segurança entre contêineres e o sistema operacional do host.
O Windows Server dá suporte aos seguintes modos de isolamento de contêiner:
Isolamento de processo. Os contêineres executados no modo de isolamento de processo podem ser chamados de contêineres do Windows Server.
Isolamento do Hyper-V. Os contêineres em execução no modo de Isolamento do Hyper-v podem ser chamados de contêineres do Hyper-v.
Modo de isolamento de processo para contêineres do Windows Server
Considerado o modo de isolamento tradicional para contêineres do Windows Server, o modo de isolamento de processo permite que várias instâncias de contêiner sejam executadas simultaneamente em um host. Durante a execução nesse modo, os contêineres compartilham o mesmo kernel entre si e com o host. Cada contêiner provisionado apresenta seu próprio modo de usuário para permitir que processos do Windows e do aplicativo sejam executados de maneira isolada de outros contêineres. Quando você configura contêineres do Windows para usar o modo de isolamento de processo, os contêineres podem executar vários aplicativos em estados isolados no mesmo computador, mas não fornecem isolamento com segurança avançada.
Observação
O Docker é uma coleção de ferramentas open-source, soluções e serviços baseados em nuvem que fornecem um modelo comum para o empacotamento de código do aplicativo (também conhecido como conteinerização) em uma unidade padronizada para o desenvolvimento de software. Você aprenderá mais sobre o Docker e os runtimes de contêiner na próxima unidade.
Quando você inicia um novo contêiner, o Docker (ou o runtime de contêiner padrão) se comunica com os serviços de computação para criar um contêiner baseado em uma imagem. Para cada contêiner, o Docker cria um contêiner do Windows. Cada contêiner do Windows requer um conjunto de processos do sistema, que são sempre os mesmos em todos os contêineres. Você pode usar seu próprio processo de aplicativo para diferenciar cada contêiner. Para fazer isso, é possível usar uma estrutura de aplicativo como o .NET, um componente do Windows Server como o IIS (Serviços de Informações da Internet) ou uma estrutura ou processos de terceiros executados no contêiner.
Modo de isolamento do Hyper-V para contêineres do Hyper-V
Quando os contêineres compartilham o kernel e a memória, existe a possibilidade de que, caso uma vulnerabilidade seja explorada por um invasor, um aplicativo saia do ambiente de área restrita e, inadvertidamente, faça algo mal-intencionado. Para evitar isso, o Windows oferece um método alternativo para executar contêineres que é mais seguro, denominado modo de Isolamento do Hyper-V, às vezes chamado de contêineres do Hyper-V.
Com o modo de isolamento do Hyper-V, cada contêiner é executado em uma VM altamente otimizada. A vantagem do modo de isolamento do Hyper-V é que cada contêiner tem efetivamente seu próprio kernel, o que fornece um nível aprimorado de estabilidade e segurança. A VM fornece uma camada adicional de isolamento no nível do hardware entre cada contêiner e o computador host. Quando implantado, um contêiner usando o modo de isolamento do Hyper-V é iniciado em segundos, o que é muito mais rápido do que uma VM com sistema operacional Windows completo.
Observação
Os contêineres baseados no Windows em execução no Windows Server usam como padrão o modo de isolamento de processo. Os contêineres baseados no Windows em execução no Windows 10 Pro e Enterprise usam como padrão o modo de isolamento do Hyper-V.
O gráfico a seguir compara as arquiteturas dos contêineres do Windows Server e do Hyper-V e seus dois modos de isolamento. O gráfico ilustra que o kernel do Windows do host é compartilhado pelo modo de usuário do host e o Windows Server. Há uma máquina virtual em execução nesse kernel compartilhado, dentro da qual está um contêiner do Hyper-V. O contêiner do Hyper-V tem seu próprio kernel do Windows, que não é compartilhado.
Cuidado
O modo de isolamento de processo no Windows 10 destina-se somente a desenvolvimento e a teste. A partir da atualização do Windows 10 de outubro de 2018, os usuários que executam um host Windows 10 Pro ou Enterprise podem executar um contêiner do Windows no modo de isolamento de processo. Os usuários devem solicitar diretamente o modo de isolamento de processo usando o parâmetro --isolation=process. O host deve estar executando o Windows 10 build 17763+ e você deve ter uma versão do Docker com o Mecanismo 18.09 ou mais recente.
Importante
Como o contêiner do Windows Server e o sistema operacional do host compartilham o kernel, você deve garantir que as tags de versão da imagem do seu host e do contêiner coincidam. Caso contrário, o contêiner poderá apresentar falha na inicialização ou exibir um comportamento indefinido. Os contêineres do Hyper-V podem ser usados como uma alternativa para executar imagens de contêiner mais antigas em hosts mais novos, por exemplo, uma imagem do Windows Server 2019 só funciona em um host do Windows Server 2022 com o isolamento do Hyper-V.
Como especificar um modo de isolamento usando um comando do Docker
A próxima unidade abordará outros detalhes sobre o Docker e os runtimes de contêiner. No entanto, neste contexto, basta compreender que ele fornece um conjunto de comandos que podem ser usados para a criação de contêineres. Ao criar um contêiner usando o Docker, é possível especificar o modo de isolamento por meio do parâmetro --isolation, além do modo de isolamento de processo ou do modo de isolamento do Hyper-V:
- Crie um contêiner usando o modo de isolamento do processo usando este comando:
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019 cmd
- Crie um contêiner usando o modo de isolamento do Hyper-V usando este comando:
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd`
Quando usar contêineres do Hyper-V em vez de contêineres do Windows Server
Os fatores a serem considerados ao escolher entre usar contêineres do Hyper-V e contêineres do Windows Server são confiança, segurança e isolamento. Recomendamos o uso de contêineres do Hyper-V quando:
Um aplicativo requer um kernel dedicado do Windows.
A confiança do aplicativo é necessária devido ao seguinte:
O sistema operacional do host não confia totalmente no aplicativo em execução.
Os aplicativos executados juntos no mesmo host não confiam uns nos outros.
Mais segurança é necessária.
Um isolamento maior é necessário.
Cenários que podem impulsionar algumas dessas decisões incluem:
Provedores de nuvem. Quando os recursos de hardware são compartilhados e utilizados, todos os fatores mencionados anteriormente podem se aplicar a cargas de trabalho em execução em diferentes clientes.
Políticas de conformidade. Pode ser necessário aderir a políticas de segurança, dados ou outras que exijam isolamento e maior segurança em suas cargas de trabalho e aplicativos em execução.
Ambientes de runtime (também conhecidos como ambientes de desenvolvimento, teste ou produção). Não é possível solicitar isolamento adicional em ambientes de desenvolvimento ou teste, mas você pode fazer isso em cenários de produção. Você também pode ter um aplicativo distribuído em um modelo de microsserviços. Diferentes cargas de trabalho de contêiner na arquitetura de aplicativos de microsserviços podem ter diferentes necessidades de isolamento que talvez você precise levar em conta.
Cuidado
Nem todos os serviços de orquestração, como o Kubernetes, dão suporte a contêineres do Hyper-V. Quando não há suporte para contêineres do Hyper-V, mas um isolamento maior é necessário, é possível recorrer a uma VM completa para executar um conjunto de contêineres lado a lado.