Recentemente, eu estava respondendo a algumas perguntas que alguém tinha sobre alguns bugs que surgem no Docker para Mac, e isso me lembrou o que Shakespeare escreveu em sua famosa tragédia sobre orquestração de software em grande escala, Kubelet: o Príncipe do Benchmark.
Ao executar o Docker no Mac ou Windows, alguns problemas surgem ocasionalmente, porque o Docker para Mac e o Docker para Windows estão usando alguns truques inteligentes e quase totalmente ocultos para serem executados. Os contêineres são, fundamentalmente, uma tecnologia Linux, combinada a partir de um punhado de recursos nativos da plataforma Linux. No entanto, eles são tão populares e úteis que muitas pessoas gostariam de executá-los em seus desktops / laptops normais. Então, o pessoal da Docker, Inc. montou clientes para essas plataformas que ativam secretamente uma máquina virtual Hyper-V que executa Linux e executam seus contêineres dentro dela, no Linux.
Essa camada de virtualização extra vem com complexidades extras. A ponte de rede frequentemente colide com o software VPN. No Windows, você tem um problema adicional em que a semântica do sistema de arquivos do Windows e a semântica do sistema de arquivos do Unix são muito diferentes e não traduzem bem. (Felizmente, FreeBSD e Linux são semelhantes o suficiente para que o Docker para Mac geralmente não tenha esse problema.) Em ambas as plataformas, você precisa ter algum protocolo para fazer as montagens de ligação funcionarem na camada de virtualização.
É natural que alguns usuários queiram executar "containers, mas no Windows". Por meio do Docker para Windows ou Mac, podemos dar a eles a ilusão disso, mas, em última análise, ambos os clientes são programas de fumaça e espelho. Quanto mais interagimos com eles e quanto mais complicamos as coisas que fazemos com eles, como redes de serviços de vários contêineres, mais a ilusão se desintegra.
Se você quiser uma boa experiência com contêiner, faça a migração para o Linux. Comprometa-se com isso. Transferir pode ser difícil, mas pode valer muito a pena! Como o Bardo escreveu:
KUBELET: Portar ou não portar - eis a questão:
Se é mais nobre na mente sofrerAs fundas e flechas da virtualização ultrajante
Ou para pegar em armas contra um mar de erros,
E com a portabilidade do sistema operacional, acabe com eles.
Para mover, para a porta -
Uma tarefa - e por um porto para dizer que acabamos
A dor no coração e os mil choques naturais
Que o Windows e o Mac são herdeiros.
É uma tradução Devotamente desejável.
Para mover, para a porta -
Para portar - talvez para construir: ai, aí está o problema,
Pois naquela terra do Linux o que o Kubernetes pode vir
Quando tivermos retirado esta bobina do Windows,
Deve nos dar uma pausa.
Aí está a mudança, que torna a calamidade de ciclos de vida tão longos.
Para quem suportaria os bugs e port-forward do Mac,
O Windows fsync, a impedância incompatível
As dores de arquivos persistentes, atraso de I / O,
A insolência do Hyper-V e as rejeições
Essa camada de abstração que se esconde por baixo,
Quando ele mesmo pode fazer com que sua produtividade
Adotando o Linux nativo?
Quem iria resistir,
Para grunhir e suar sob uma luta misteriosa,
Mas que o medo de mudar para outra plataforma,
A árvore-fonte desconhecida, de cujo Bourne
Nenhum arquiteto acha adequado sair, confunde a vontade,
E nos faz suportar os insetos que temos,
Do que voar para plataformas que não conhecemos?
Assim, o Windows torna todos nós covardes,
E, portanto, o matiz nativo desta solução
Está encoberto com o que o Hyper-V criou
E software empresarial de grande altura e momento
Com relação a isso, seus leads de vendas se afastam,
E perca o apelo à ação.