Mudei do Docker Desktop para WSL Containers e voltei

Desde que a Microsoft adicionou o Windows Subsystem Linux ao meu desktop, estou esperando pelo suporte a contêineres. Os termos de licenciamento do Docker Desktop estão sempre mudando, seu daemon de segundo plano trata minha RAM como um buffet e transforma cada atualização do Windows em um cara ou coroa. Quando a visualização do contêiner WSL foi lançada, algumas semanas atrás, fiz a única coisa sensata.

Ok, talvez isso não fosse uma coisa completamente sensata de se fazer. As visualizações do Windows 11 costumam ter seus problemas, e não estou pronto para desistir do Docker Desktop por uma alternativa. Mas passei algum tempo descobrindo quais partes do fluxo de trabalho eu poderia mover para wslc.exe, e há mais do que eu pensava. Mas uma semana depois, estou de volta, deixando o Docker Desktop consumir a memória do meu sistema como o Pac-Man. Não por bugs, desempenho, estabilidade ou qualquer outro motivo que pensei que poderia; apenas por causa de uma característica essencial.

A Microsoft descobriu as partes das quais todos reclamam

O rendimento da GPU também é tratado de forma transparente

Chegar lá foi uma aventura própria. wsl --update --pre-release jurei que era relevante wsl --version mostrou 2.9.3.0 com o kernel correto, e where.exe wslc voltei vazio todas as vezes. Descobriu-se que a atualização mentiu sobre seu conteúdo: reinstalar o pacote real produziu um erro de implantação alegando que ele “já estava instalado”, apesar dos conteúdos diferentes, e a correção envolveu o cancelamento do registro de todos os usuários do AppX com o nome exato antes que a instalação limpa entrasse em vigor. Não é um bug do wslc, apenas um problema de empacotamento em uma prévia de uma semana, e prefiro lidar com uma instalação aproximada uma vez do que com tempos de execução difíceis todos os dias.

Depois que a CLI estiver instalada e funcionando, ela será uma imitação deliberada do Docker, e isso é um elogio. wslc run --rm -it ubuntu:latest bash faça exatamente o que sua memória muscular lhe diz para fazer, e faça-o wslc build, wslc container pse publicar portos com -p 8080:80. Não li uma única página da documentação nos primeiros dois dias. Nem existe um demônio sempre ativo que se lembre de manhã; cada sessão é uma nova máquina virtual Hyper-V que desaparece quando você termina.

Os contêineres começam a funcionar assim que a imagem é extraída, limitados apenas pela velocidade da Internet e pela lentidão do repositório do contêiner. É uma mudança de estilo de vida porque não preciso mais esperar que o Docker Desktop decida o que está fazendo nos bastidores. E com o modo de rede espelhado, posso usar localhost para acessar esses contêineres sem me preocupar com o IP da rede.

Tudo isso é legal, mas há um recurso de manchete que eu não havia considerado. Passagem de GPU As GPUs Nvidia funcionam nativamente, com um --gpus all um sinalizador que permite que a nvidia-smi encontre meu RTX 5090 na primeira tentativa. Não há especificações de CDI para gerar manualmente, nem kit de ferramentas para instalar em um contêiner. É o mesmo passe de piloto que a WSL administra silenciosamente há anos, e foi ótimo vê-lo no primeiro dia de prévias.

A imagem padrão do PyTorch não possui os núcleos Blackwell (sm_120) integrados, portanto, embora tenha detectado meu RTX 5090 como bom, todas as chamadas CUDA falharam. A compilação nightly cu128 também falhou porque pip viu o pacote torch na imagem base e pulou a instalação sem me avisar. Você tem que adicionar — atualizar – forçar a reinstalação para a string para corrigi-lo precisa saber.

Além disso, a Microsoft enviou a API do contêiner como um pacote NuGet para C, C++ e C#, que permite que aplicativos do Windows criem contêineres Linux como parte de sua lógica. Eu não envio aplicativos do Windows, então eles não são para mim, mas este é um indicador claro de que a Microsoft não está apenas clonando o Docker Desktop, está tornando os contêineres uma plataforma Windows primitiva.

WSL é um buraco em forma de Docker Compose

Até que isso seja corrigido, não posso usá-lo para nada

Tenho uma confissão a fazer aqui. Não verifiquei o suporte do Docker Compose antes de tentar excluir o Docker Desktop do meu sistema. Tive que fazer isso porque ainda não existe no wslc. Presumi que estaria lá porque a compatibilidade do Docker era tudo o que a Microsoft tinha a oferecer e meu cérebro preencheu as lacunas.

Atualmente, os contêineres WSL não têm nada como Docker Compose. Sem suporte YAML, não criar wslcnão, nada. Este é o maior problema para mim, já que meu laboratório doméstico funciona com arquivos Compose, desde o kit de ferramentas de IA nativo até os sistemas de monitoramento e meia dúzia de itens essenciais que residem em meu NAS. Cada arquivo define redes, dependências, volumes de armazenamento e ordem de inicialização, e a resposta atual da Microsoft é um encolher de ombros.

Agora você pode dividir manualmente o arquivo Compose e transformá-lo em scripts do PowerShell que contêm execução wslc equipes. Passei a noite com Claude explicando como fazer e, embora não consiga fazer isso sozinho, sei como por trás do processo. Mas é tedioso ter que fazer isso para cada arquivo do Compose, e não tive coragem de fazer a outra dúzia de serviços dos quais confio. Analisarei isso novamente quando a Microsoft decidir criar um recurso de escrita. Ainda nem é um pilar que falta; é a base que falta para meu fluxo de trabalho e estou de volta a usar o Docker Desktop por enquanto.

Docker Desktop vence hoje, mas não deve ficar confortável

A lacuna está diminuindo

Então, estou voltando, mas isso não significa que estou feliz com isso. O Docker Desktop volta para a estação de trabalho porque minhas pilhas de vários serviços estão em arquivos do Compose e não as estou traduzindo em scripts do PowerShell e depois voltando quando o wslc tiver suporte para o Compose. Isso é a única razão Estou divagando: todo o resto sobre os contêineres WSL é melhor ou está claramente caminhando nessa direção.

E wslc.exe também não desinstala, e não pela simples razão de que você não pode desinstalá-lo. Faz parte da WSL e você tem que remover tudo (o que eu definitivamente não faço). Já conquistou um lugar no meu fluxo de trabalho para contêineres de lançamento rápido para testar algo no Ubuntu ou para experimentos de GPU que exigem Nvidia CUDA. E a extensão Dev Containers do VS Code tem suporte wslc no modo de pré-lançamento, e a mudança é tão fácil quanto um único campo de configurações, tornando-o um desenvolvedor de contêiner único.

Atualmente, o Docker Desktop tem uma tarefa: organizar várias pilhas de contêineres. É um trabalho importante, o que é uma boa notícia para o Docker porque é a única coisa que o separa do lixo. Assim que a Microsoft preencher essa lacuna, poderei banir esse daemon e recuperar minha preciosa cota de RAM.

Link da fonte