Windows-native Docker Engine – Nativo?
Publicado em: sábado, 14 de out de 2017

O post é simples, rápido mas ajuda a entender o que significa esse tumulto a respeito do suporte nativo a Docker e Linux Containers no Windows 2016 Server.

Complexidade do Docker

Primeiro, é importante ressaltar que se fosse de fato possível rodar Linux Containers no Windows, sem virtualização, deveríamos ter um anúncio do tamanho do anúncio da chegada do homem à lua. Ok, estou exagerando, mas é importante compreender a dimensão do que seria, definitivamente seria algo incrivelmente fantástico. E por que? Porque mesmo com os esforços no desenvolvimento do Windows Subsystem for Linux, as features do Kernel do Linux exigidas pelo Docker estão a anos de distância na timeline de desenvolvimento do Windows Subsystem for Linux.

Hoje conseguimos rodar muita coisa, mas definitivamente Docker é um projeto que não conseguimos rodar no Windows, ainda, sem nenhum tipo de virtualização. Detalhando melhor o produto e seus componentes vemos o Docker como CLI e DockerD seu daemon. No passado o problema morava no DockerD, mas com as diversas quebras e abstrações que o DockerD veio sofrendo ao longo dos últimos 2 anos, emergindo do código fonte do dockerd, containerd, e runC.  A cada evolução no docker, vemos o dockerd ficando cada vez mais agnóstico, e outros elementos vão assumindo papéis que outrora eram do dockerd. Reside no runC a incapacidade de executar Linux Containers no kernel do windows. Esse problema ocorre em virtude das features do kernel dos quais ele depende.

Ainda é possível ver posts que apelam para o sensacionalismo como “Setting Up Docker for Windows and WSL to Work Flawlessly” (link) ou “[Cross Post] WSL Interoperability with Docker” (link). Na verdade estamos falando de rodar Docker no WSL enquanto o DockerD e suas dependências estão no Docker for Windows (e por sua vez no Hyper-v).

Então, o que vem a ser esse suporte Nativo a Linux Containers?

A resposta é simples e é muito interessante:

Trata-se de uma revisão sobre o Hyper-v, criando uma camada mais thin do que virtualização tradicional, algo parecido com uma virtualização de kernel, permitindo continuar usando a infraestrutura do hyper-v, mas com um stack infinitamente mais enxuto, mais rápido, mais eficiente, feito para rodar apenas o kernel em uma lightweight virtual machine, da forma mais enxuta possível.

Conclusão

A imagem abaixo apresenta novos elementos como HCS e GCS eles são responsáveis por colaborar com o hyper-v a ponto de viabilizar a criação de um stack reduzido de virtualização. Isso significa que ao invés de um stack completo, complexo e com provisionamento lento, milhares de camadas de abstração e isolamento, temos algo enxuto e instantâneo:

A forma adequada de usar Docker e Linux Containers no Windows Server é instalando um pacote powershell ou ou realizar uma instalação via DSC, não necessitando do Docker for Windows.

Update 10/03/2018

Fiz algumas revisões no texto para tirar a conotação de máquina virtual no que diz respeito às lightweight virtual machines. Na prática há uma discussão paralela e filosófica sobre lightweight virtual machine. Afinal, é uma VM ou não? Deixe seu comentário e conte o que você acha!

Um ponto bem relevante que precisamos ponderar é que: Docker já está se desprendendo de features do kernel, abstraindo muito quebrando-se em camadas, como containerd, runc, etc.  No passado DockerD tinha muita responsabilidade, mas na medida que o projeto é desmembrado em abstrações, se torna cada vez mais fácil ser multiplataforma. Ao mesmo tempo notamos que para a Microsoft foi mais estratégico criar o LCOW e combinar algumas abstrações com a Docker CO do que completar o mapeamento de syscalls do Kernel do Linux no WSL, demonstrando mais uma vez o hiato entre expectativa e realidade sobre o WSL.

No Windows 10

Aproveitei para buscar alguns posts sobre Docker no Windows 10, esclarecendo como você pode tirar proveito do LCOW e Docker native no windows.

https://blog.docker.com/2018/02/docker-for-windows-18-02-with-windows-10-fall-creators-update/

https://blog.docker.com/2017/11/docker-for-windows-17-11/

Opinião

Na minha opinião, a Microsoft não precisava adotar esse nome. Chamar de nativo é uma estratégia mais agressiva do que realista. Não entendo o motivo, talvez influencias no market share do Windows Server, talvez pressão do mercado, não sei. Mas de qualquer forma é notório que ajuda seu sistema operacional para servidores se sustentar e de quebra ganha elementos como Kubernetes e outros que originalmente foram desenhados para trabalhar exclusivamente com Linux Containers.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Eventos passados

outubro 2020
setembro 2020
agosto 2020
Nenhum evento encontrado!
Carregar Mais

Publicidade

Assine

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Próximos Eventos Próximo
22 outubro 2020
  • 00

    dias

  • 00

    horas

  • 00

    minutos

  • 00

    segundos

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Agenda & Eventos

setembro

outubro 2020

novembro
DOM
SEG
TER
QUA
QUI
SEX
SAB
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
Events for 30th setembro
Events for 1st outubro
Events for 2nd outubro
Sem Eventos
Events for 3rd outubro
Sem Eventos
Events for 4th outubro
Sem Eventos
Events for 5th outubro
Sem Eventos
Events for 6th outubro
Sem Eventos
Events for 7th outubro
Sem Eventos
Events for 8th outubro
Sem Eventos
Events for 9th outubro
Sem Eventos
Events for 10th outubro
Sem Eventos
Events for 11th outubro
Sem Eventos
Events for 12th outubro
Sem Eventos
Events for 13th outubro
Sem Eventos
Events for 14th outubro
Sem Eventos
Events for 15th outubro
Sem Eventos
Events for 16th outubro
Sem Eventos
Events for 17th outubro
Sem Eventos
Events for 18th outubro
Sem Eventos
Events for 19th outubro
Sem Eventos
Events for 20th outubro
Sem Eventos
Events for 21st outubro
Sem Eventos
Events for 22nd outubro
Events for 23rd outubro
Sem Eventos
Events for 24th outubro
Sem Eventos
Events for 25th outubro
Sem Eventos
Events for 26th outubro
Sem Eventos
Events for 27th outubro
Sem Eventos
Events for 28th outubro
Sem Eventos
Events for 29th outubro
Sem Eventos
Events for 30th outubro
Sem Eventos
Events for 31st outubro
Sem Eventos
Share This