Resumo:
A Microsoft migrou os WSL Containers de uma versão prévia pública para uma versão disponível ao público em geral. Os usuários podem executar "wsl --update" para obter funções relacionadas, incluindo a ferramenta de linha de comando wslc.exe e a API WSL Containers. Embora o número da versão oficial no GitHub seja WSL 3.0.1, isso não significa que a Microsoft lançou o WSL 3; A Microsoft negou anteriormente a existência desta nova versão.

Anteriormente, se os desenvolvedores do Windows quisessem executar contêineres Linux, geralmente precisavam instalar o Docker Desktop ou configurar manualmente o Docker Engine na distribuição WSL Linux. WSL Containers integra fluxos de trabalho de contêiner diretamente no WSL. wslc.exe pode ser usado para construir, executar, gerenciar e implantar contêineres Linux a partir do Windows. Ele também fornece container.exe como um alias. Os desenvolvedores familiarizados com o Docker também podem usar comandos semelhantes. A API de suporte permite que aplicativos nativos do Windows criem e controlem contêineres Linux por meio de código e oferece suporte a chamadas C# e C++/WinRT, entrada e saída padrão, montagem de arquivos, acesso à rede e GPU.

"Nativo" aqui não significa que o contêiner é executado no kernel do Windows. Na verdade, o contêiner é executado no kernel Linux na máquina virtual WSL. A Microsoft redesenhou a forma como as sessões de contêiner são gerenciadas. Aplicativos WSL regulares criam máquinas virtuais por meio do serviço wslservice.exe do Windows com permissões mais altas; WSL Containers usa o serviço para criar um subprocesso chamado wslcsession.exe, que cria contêineres, monta diretórios e vincula portas de rede em nome do usuário. A Microsoft disse que cada sessão é hospedada por um processo independente, o que pode fortalecer o isolamento; as permissões necessárias para operações de sessão também são inferiores às de wslservice.exe, o que ajuda a melhorar a segurança.
Cada sessão possui um disco rígido virtual independente, que é salvo no diretório de dados do aplicativo do usuário. Os contêineres podem usar pastas do Windows por meio de montagens de volume. A Microsoft usa virtiofs para compartilhar diretórios com máquinas virtuais, dizendo que é cerca de duas vezes mais rápido que a solução Plan 9 usada pelas distribuições WSL tradicionais para acessar a unidade C. Para contêineres que exigem sistemas de arquivos Linux nativos ou capacidade de armazenamento limitada, volumes de disco rígido virtual podem ser usados.


A versão oficial adiciona comandos como reinicialização de contêiner, cópia de arquivos, conexão e desconexão de rede, mais opções de driver de rede, verificação de integridade de contêiner e montagem de diretório ao criar e executar contêineres. A rede também introduz uma arquitetura chamada Consommé. O tráfego de rede da máquina virtual Linux entrará na fila virtio na forma de quadros Ethernet e, em seguida, o processo do Windows será executado enquanto o usuário lida com consultas DNS, tráfego TCP e UDP e mapeamento de portas. A Microsoft disse que este método é mais compatível com VPNs e firewalls e irá melhorar os problemas de rede que os usuários de WSL enfrentam há muito tempo. Em testes anteriores, o Windows conseguiu acessar o serviço Flask em execução no contêiner por meio de localhost sem configuração de rede adicional.

A Microsoft também está adicionando recursos de gerenciamento e segurança para uso empresarial. Os administradores de TI podem habilitar ou desabilitar contêineres WSL por meio do Microsoft Intune e restringir imagens de contêiner para serem extraídas apenas de registros aprovados. A integração WSL existente do Microsoft Defender for Endpoint também é estendida a contêineres, mostrando atividades de processos, arquivos e rede dentro do contêiner e correlacionando-as ao host do Windows. A Microsoft disse que esses recursos, combinados com o Intune e o Defender, podem fornecer os controles de segurança necessários para ambientes corporativos.

Em termos de ferramentas de desenvolvimento, a Microsoft anunciou que a extensão VS Code Dev Containers pode usar wslc como driver de contêiner. A extensão VS Code Containers e o Aspire também suportam esse recurso. O gerente de produto WSL da Microsoft, Craig Loewen, disse que os usuários só precisam selecionar wslc como um programa executável nas configurações. No entanto, alguns desenvolvedores relataram que, mesmo que a extensão seja substituída pela versão oficial, o Dev Containers ainda avisará que o comando docker não pode ser encontrado, indicando que a integração atual do editor ainda pode precisar ser verificada e ajustada.
O suporte ao Compose, que os desenvolvedores mais esperam, ainda está em desenvolvimento. O Compose pode gravar vários contêineres, como front-end, API de back-end, banco de dados e cache no mesmo arquivo de configuração compose.yaml e, em seguida, iniciar todo o conjunto de serviços com um comando. A Microsoft disse que o Compose é o recurso wslc mais solicitado no momento e espera que, no futuro, o "wsl compose up" possa executar diretamente os arquivos de configuração existentes sem modificação. Durante os testes anteriores, devido à falta do Compose, os desenvolvedores só podiam iniciar serviços em projetos multicontêineres, um por um.


Ainda há lacunas em algumas cenas avançadas. Os engenheiros da Microsoft mencionaram que os desenvolvedores podem tentar usar o projeto da comunidade wslc-remote que eles mantêm para construir e enviar imagens dentro da distribuição WSL; A Microsoft espera oferecer suporte nativo no futuro, mas ainda precisa lidar com muitas situações especiais. Outros usuários disseram que a falta de suporte ao parâmetro "--privileged" os forçou a voltar para o Docker para executar clusters Kubernetes kind e k3d. A Microsoft disse que os recursos relacionados serão lançados em breve, o código entrou no ramo principal e deverá entrar na fase de visualização em breve. Portanto, a disponibilidade oficial não significa que o wslc tenha todas as funções de uma plataforma de contêiner madura.
Os contêineres WSL também oferecem suporte ao Windows 10 e ao Windows Server. O gerente de produto WSL da Microsoft disse que, desde que o sistema atual suporte WSL, os contêineres poderão ser executados; O Windows Latest também testou o wslc no Windows 10 antes e construiu e executou com sucesso o painel Flask. A Microsoft confirmou que o Windows Server também oferece suporte ao uso desse recurso em ambientes de produção.


O relatório comparou esta mudança com a atitude anterior da Microsoft em relação ao Linux. O ex-CEO da Microsoft, Steve Ballmer, certa vez chamou o Linux de “câncer”. Hoje, a Microsoft continua a melhorar o WSL, a abri-lo e a melhorar o acesso a arquivos e os recursos de rede entre Windows e Linux. A Microsoft disse que o Linux agora não é mais apenas um ambiente de desenvolvimento, mas também pode hospedar cargas de trabalho nativas de IA e nuvem; o artigo também mencionou que o Google está fornecendo suporte nativo ao Windows 11 e WSL para suas novas ferramentas de IA, e a Canonical disse que a taxa de crescimento do Ubuntu no Windows 11 excedeu a dos computadores Linux nativos. Apesar disso, o autor acredita que a maioria dos desenvolvedores não desistirá do Docker Desktop imediatamente antes do Compose e de alguns recursos avançados serem concluídos; se a configuração não modificada do Compose puder ser executada diretamente no futuro, mais pessoas poderão considerar a desinstalação do Docker Desktop.
Comentários