Um escritor do XDA executou seu homelab inteiro em contêineres WSL por uma semana e descobriu que “não muita coisa” quebrou. Essa é a leitura honesta: WSL 2 cresceu, Docker Desktop ficou mais pesado, e muito trabalho de homelab agora funciona bem dentro de uma distribuição Linux no Windows sem o custo de VM do Docker Desktop. Esses são os melhores aplicativos para migração de contêineres WSL do Docker no desktop, as ferramentas que permitem que uma máquina Windows execute contêineres sem pagar uma licença por assento ou inicializar uma segunda VM para executar o daemon.
Testamos sete ferramentas dentro do WSL 2 no Windows 11 24H2 com um laptop AMD Ryzen e uma estação de trabalho Nvidia. Cada escolha é instalada em uma imagem Ubuntu 24.04 ou Debian 12 WSL padrão, sobrevive a uma reinicialização do Windows, e substitui completamente o Docker CLI ou fica atrás dele. As diferenças aparecem em torno da passagem de GPU, suporte a systemd e como cada ferramenta trata a costura do sistema de arquivos Windows-Linux que causa a maioria das migrações falharem.
O que procurar em uma pilha de contêineres WSL
- WSL 2 com systemd ligado. Ferramentas de contêiner modernas querem que pid 1 seja systemd.
- Sem privilégios onde possível. Nenhum daemon executando como root dentro da distribuição.
- Acesso a GPU. Nvidia CDI ou o caminho CUDA-on-WSL para que treinamento e inferência funcionem.
- Volumes persistentes no lado Linux. Os bind mounts permanecem no sistema de arquivos ext4, não em
/mnt/c. - Compatibilidade com Docker-CLI. Os comandos
dockeredocker composeexistentes continuam funcionando durante a migração. - Inicialização automática no login do Windows. Task Scheduler ou a entrada de inicialização automática do WSL mantém os serviços em execução sem um
wsl -dmanual.
Comparação rápida
| Aplicativo | Melhor para | Plataformas | Plano gratuito | Tier pago | Classificação |
|---|---|---|---|---|---|
| WSL 2 | A camada de distribuição em que tudo o mais se assenta | Windows 10, 11 | Totalmente gratuito | Nenhum | 4.8 |
| Podman | CLI docker substituto sem daemon |
Ubuntu, Debian, Fedora em WSL | Totalmente gratuito | Podman Desktop, gratuito | 4.7 |
| Rancher Desktop | Pilha gerenciada compatível com Docker | Windows | Totalmente gratuito | Nenhum | 4.6 |
| Distrobox | Múltiplas distribuições Linux lado a lado | Qualquer distribuição WSL | Totalmente gratuito | Nenhum | 4.7 |
| systemd-nspawn | Contêineres OS leves integrados ao systemd | WSL com systemd | Totalmente gratuito | Nenhum | 4.5 |
| nerdctl | CLI nativo de containerd quando um substituto Docker é suficiente | Ubuntu, Debian, Fedora em WSL | Totalmente gratuito | Nenhum | 4.7 |
| Lima | VMs Linux a partir de um arquivo de configuração para portabilidade | Windows via WSL, macOS, Linux | Totalmente gratuito | Nenhum | 4.7 |
Os aplicativos
1. WSL 2 para contêineres — Melhor camada de distribuição
WSL 2 é a base que transforma Windows em um host de contêineres viável. Com a flag systemd ligada em /etc/wsl.conf, uma instalação Ubuntu ou Debian inicia em um init real, que é o que desbloqueia Podman, nerdctl e tudo mais nesta lista. O limite de memória do lado Windows em .wslconfig evita que contêineres descontrolados consumam o host, e o modo de rede nas versões recentes evita o jogo de portas localhost.
Onde falha: I/O entre sistemas de arquivos é lento. Mantenha dados de contêiner no lado ext4 do Linux, não em /mnt/c/Users/..., ou um compose que levou 2 segundos no Docker Desktop levará 40 aqui.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Windows 10 21H2 e posteriores, Windows 11.
Download: learn.microsoft.com/windows/wsl · github.com/microsoft/WSL
Conclusão: Ligue systemd primeiro, depois escolha uma ferramenta de contêineres. Tudo abaixo assume esta etapa.
2. Podman para WSL — Melhor Docker CLI sem daemon
Podman fornece um CLI compatível docker, podman-compose para arquivos compose, e executa sem privilégios. Dentro de uma imagem WSL Ubuntu, dnf ou apt install podman e alias docker=podman cobre a maioria da migração em uma tarde. A primitiva de pod do Podman mapeia melhor para Kubernetes do que Docker compose, o que torna o eventual passo para um orquestrador real menos uma reescrita.
Onde falha: Alguns arquivos compose usam sintaxe específica do Docker que podman-compose trata imperfeitamente. Podman Compose v2 corrige a maioria; casos extremos permanecem.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum. Podman Desktop também é gratuito.
Plataformas: Ubuntu, Debian, Fedora e outras distribuições dentro do WSL.
Download: podman.io · github.com/containers/podman
Conclusão: A escolha certa para qualquer um que deixar Docker Desktop por sua licença ou pegada.
3. Rancher Desktop em WSL — Melhor pilha gerenciada compatível com Docker
Rancher Desktop envolve containerd e Moby em um instalador Windows, usa WSL nos bastidores, e oferece uma UI para imagens e Kubernetes. Ele também expõe binários docker e docker compose com o mecanismo de contêiner de sua escolha. Isso o torna o substituto Docker Desktop mais suave quando o resto do time ainda espera que docker simplesmente funcione.
Onde falha: O orçamento de RAM é maior do que Podman raw dentro do WSL porque Rancher Desktop executa sua própria estrutura de VM utilitária no topo da distribuição WSL.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Windows 10, 11 (backend WSL 2).
Download: rancherdesktop.io · github.com/rancher-sandbox/rancher-desktop
Conclusão: Escolha Rancher Desktop quando o time quer um substituto Docker Desktop, não uma reescrita completa do fluxo de trabalho.
4. Distrobox em WSL — Melhor multi-distribuição lado a lado
Distrobox cria e gerencia contêineres que mantêm distribuições completas e se integram com a imagem WSL do host, então um projeto que precisa de ferramentas Fedora e outro que precisa de Ubuntu 20.04 ambos vivem na mesma máquina. Em WSL, isso transforma uma distribuição WSL no lançador de um pequeno conjunto de ambientes de propósito específico, e cada um tem suas próprias ferramentas de contêineres, acesso a GPU e gerenciador de pacotes.
Onde falha: Não é um substituto Docker por si só. Fica ao lado de Podman ou nerdctl e trata do problema “Preciso de um ambiente de compilação correspondente”.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Qualquer distribuição WSL com Podman ou Docker.
Download: distrobox.it · github.com/89luca89/distrobox
Conclusão: Adiciona o padrão “muitas distribuições em uma caixa do Windows” sem girar imagens WSL separadas.
5. systemd-nspawn em WSL — Melhores contêineres OS leves
systemd-nspawn é o que o próprio systemd fornece para contêineres em nível de SO. Não é um substituto Docker completo, mas é a forma mais leve de executar um sandbox de distribuição dentro do WSL sem outro daemon. Cargas de trabalho legadas que esperam um init completo, cron e um barramento systemd se comportam dentro de nspawn melhor do que em um contêiner OCI despojado.
Onde falha: Nenhuma história de registro de imagens. Você traz seu próprio sistema de arquivos raiz, geralmente debootstrap.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Distribuições WSL que têm systemd habilitado.
Download: freedesktop.org/wiki/Software/systemd · systemd/systemd no GitHub
Conclusão: O contêiner para a carga de trabalho que finge ser um servidor Linux inteiro.
6. nerdctl em WSL — Melhor CLI nativo de containerd
nerdctl é o CLI compatível Docker do projeto containerd, e está próximo o suficiente de docker para que scripts não percebam a troca. Dentro do WSL, ele funciona bem com containerd instalado diretamente da versão containerd, sem Docker ou Podman na imagem. Essa combinação é a forma mais enxuta de executar contêineres OCI no Windows sem a VM Docker Desktop.
Onde falha: Buildkit para compilações de imagens precisa de um passo extra. Uma vez configurado, nerdctl build se comporta.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Ubuntu, Debian, Fedora em WSL.
Download: github.com/containerd/nerdctl · containerd.io
Conclusão: A ferramenta certa se você sabe que suas cargas de trabalho executam no containerd mesmo e não precisa dos extras do Docker.
7. Lima em WSL — Melhor VMs-como-config para portabilidade
Lima descreve VMs Linux em um arquivo YAML e as executa da mesma maneira em macOS, Linux e Windows via WSL. Isso torna a ferramenta que mantém o “host de contêineres” reproduzível mesmo quando o laptop do desenvolvedor muda entre plataformas. Uma equipe pode compartilhar uma configuração Lima e todos obtêm a mesma configuração de containerd ou Docker independentemente do SO.
Onde falha: Lima no Windows ainda depende do WSL como mecanismo de VM, então os limites de memória e rede de WSL subjacentes se aplicam.
Preço:
- Gratuito: Totalmente gratuito.
- Pago: Nenhum.
Plataformas: Windows (via WSL 2), macOS, Linux.
Download: lima-vm.io · github.com/lima-vm/lima
Conclusão: Use Lima quando o arquivo de configuração importa mais do que o mecanismo de contêiner específico.
Como escolher o certo
- Se você quer a migração menos invasiva: Rancher Desktop, mantenha o CLI
docker, troque o mecanismo atrás. - Se você quer sem daemon e sem questão de licença: Podman dentro de uma WSL Ubuntu habilitada para systemd.
- Se você precisa de múltiplas distribuições em uma caixa do Windows: Distrobox em topo de Podman.
- Se uma carga de trabalho quer um SO completo com init: systemd-nspawn dentro do WSL.
- Se o time usa macOS, Linux e Windows: Lima com uma configuração YAML compartilhada.
FAQ
Posso executar arquivos Docker Compose dentro do WSL sem Docker Desktop?
Sim. Instale Docker Engine diretamente dentro de uma distribuição WSL habilitada para systemd, ou use Podman com podman-compose, ou Rancher Desktop com o mecanismo Moby. Todos os três executam arquivos docker-compose.yml sem a VM Docker Desktop.
O WSL 2 suporta GPUs Nvidia para contêineres?
Sim em drivers Nvidia suportados. Instale o kit de ferramentas CUDA-on-WSL dentro da distribuição, exponha a GPU com Nvidia Container Toolkit, e contêineres a veem. O suporte AMD no WSL é limitado a compilações ROCm mais recentes e cartões específicos.
Devo manter dados de contêiner em unidades Windows ou no lado Linux?
Mantenha no lado ext4 do Linux. Bind mounts para /mnt/c cruzam a costura do sistema de arquivos 9P e desaceleram compilações e bancos de dados até rastejar. Use acesso ao sistema de arquivos do Windows apenas para editar código.
Como faço com que contêineres WSL se iniciem automaticamente ao fazer login no Windows?
Dois caminhos. Adicione boot.command em /etc/wsl.conf dentro da distribuição (WSL 2 com systemd o executa), ou adicione uma entrada Task Scheduler que execute wsl -d Ubuntu -u root -- systemctl start yourservice.service ao fazer login.
O WSL 2 é rápido o suficiente para um homelab que costumava executar no Docker Desktop?
Para a maioria das cargas de trabalho de homelab sim, e geralmente mais rápido porque não há VM de utilidade extra na pilha. Bancos de dados e I/O pesado se beneficiam mais quando dados vivem no lado ext4; serviços leves não veem diferença de forma alguma.