Quando a Microsoft e o Docker anunciaram pela primeira vez que a próxima versão do Windows Server suportaria a tecnologia de contêineres cada vez mais popular, não havia muitos detalhes técnicos sobre o que seria necessário para fazer esse trabalho, com perguntas sobre como o Docker nativo poderia realmente ser.

"O mecanismo Docker para o Windows Server terá uma paridade de recursos efetiva com o Linux", disse David Messsina, vice-presidente do Docker. "Não haverá diferença no uso de um contêiner, além do sistema operacional dentro do contêiner. As APIs e tudo o que os desenvolvedores de aplicativos precisam confiar serão os mesmos."

Mas no Linux, o mecanismo Docker (que executa os contêineres e é separado do cliente Docker que você usa para gerenciá-los) usa recursos do kernel, como namespaces e grupos C. O Windows Server terá isso, junto com um registro, hospedagem de serviço e listas de controle de acesso para cada contêiner.?

"Faremos tudo isso", confirmou o diretor de tecnologia do Azure, Mark Russinovich, ao TechRadar Pro, na TechEd Europe, "não haveria muito sentido se não o fizéssemos." A questão mais interessante é como isso se encaixa com o modelo de aplicativo do Windows Server e como ele pode tirar proveito de alguns tipos de virtualização que a Microsoft já colocou em seu sistema operacional para compatibilidade reversa.

Abordagem diferente

Os contêineres Docker adotam uma abordagem muito diferente de colocar um sistema operacional inteiro e um ou mais aplicativos em uma máquina virtual e executá-lo como um sistema único que pode ou não se comunicar com outras máquinas virtuais em uma rede virtual.

O Docker trata da criação de uma carga de trabalho a partir de microsserviços, com um serviço por contêiner. "Esses contêineres podem ser distribuídos", explicou Messina, "pode ​​haver várias cópias de cada um desses serviços distribuídos pelo ambiente". O Docker é sobre dividir as coisas em contêineres e, em seguida, conectá-los como blocos de Lego para criar o sistema que você precisa.

Mas como isso se encaixa com o Windows Server? "Uma das principais questões é até onde podemos levar compatibilidade com este aplicativo", ressaltou Russinovich. "Quando você olha para o ecossistema de aplicativos do Windows é muito complexo, e os aplicativos são muito complexos em termos de suas dependências e dos diferentes serviços que o servidor disponibiliza para eles. Estamos descobrindo quais serviços podem ser virtualizados e quais precisam ser virtualizados para que possamos apresentar essa exibição de serviços por contêiner. Os aplicativos mais fáceis de manipular são totalmente isolados, portanto, eles não estão aproveitando os serviços do Gerenciador de Controle de Serviço do Windows. "

Cada um para o seu próprio

Cada contêiner também precisará de seu próprio Registro, para que os aplicativos possam gravar nele, mas isso é algo que está no Windows há vários anos, como parte da tentativa de impedir que os usuários efetuem login como administradores para instalar aplicativos de desktop..

"O que estamos fazendo lá é mais sofisticado, mas estamos aproveitando a virtualização do sistema de arquivos e a virtualização de registros que fizemos, bem como a virtualização de rede." Conseguir que os serviços sejam virtualizados corretamente é a chave para trazer o Docker para o Windows, explicou Russinovich, e os namespaces fazem parte desse trabalho.

"Há algumas coisas que são únicas quando se trata desses contêineres. A virtualização que você normalmente vê no Windows é de um nível, mas o modelo do Docker é virtualização empilhada." Isso significa que uma imagem do Docker pode ser apenas uma referência a outra imagem, além de algum código extra.

"Você começa com uma imagem de base que é um sistema de arquivos virtual, então você sobrepõe outra imagem com seu próprio sistema de arquivos virtual e isso compõe no topo [da primeira imagem]. Você pode compor várias camadas diferentes juntas o valor do formato de embalagem do Docker.