Nesse artigo vou descrever como configurar seu ambiente de desenvolvimento Ubuntu dentro do Windows, possibilitando vantagens para o desenvolvedor como:
- acesso ao Bash nativo do Linux
- uso do Docker com mais agilidade
- Rodar containers no Docker do Ubuntu e visualizar no navegador Edge/Chrome do Windows
O que é WSL?
WSL significa Windows Subsystem for Linux, o que inicialmente seria uma camada de compatibilidade para executar binários feitos pra Linux no Windows nativamente, porém a nova versão WSL 2 coloca um kernel Linux lado-a-lado do kernel Windows.
Instalação WSL
Abra o Powershell e digite o seguinte comando:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
wsl --set-default-version 2
Agora vá até a Windows Store e busque pela sua distribuição Linux favorita:
No meu caso optei pelo Ubuntu, na versão 20.4:
Logo que terminar a instalação, você vai receber uma tela de terminal para configurar o nome do usuário e senha. Feito isso já tem um Ubuntu pronto para o uso, mas vamos melhorar um pouco a experiência, instalando o Windows Terminal.
Windows Terminal
Windows terminal é uma excelente ferramenta de desenvolvimento. Com ele você acaba tendo uma experiência muito mais rica nos consoles que você já utilizava no Windows, tais como CMD, Powershell e Git Bash.
Instalação
O Windows Terminal está disponível para download na Windows Store:
Assim que instalar você verá que ele já lista todos os terminais disponíveis, incluindo o o Bash do Ubuntu que acabamos de instalar.
Configuração
Terminando de instalar, visite a configuração.
Ainda não há interface gráfica para isso, mas é possível fazer através de arquivo de configuração.
Exemplos de configurações possíveis:
- Temas e Fontes
- Inclusão ou Exclusão de Terminais disponíveis
- Diretório padrão
- Atalhados de teclado
VScode
Ao abrir o VSCode após a instalação do WSL 2, ele vai sugerir que você instale a extensão Remote - WSL. Fazendo isso você vai possibilitar a seguinte arquitetura no VSCode:
Dessa forma você vai ter uma experiência exatamente igual a que teria no Linux, inclusive acesso ao Bash, aos diretórios do Ubuntu e aos do windows através de /mnt/c, por exemplo.
Extensões
Quando você acessa o menu de extensões, logo repara que tem algumas coisas diferentes:
Agora as extensões são separadas em local e WSL - Ubuntu, pois fazem sentido de acordo com o ambiente de execução.
Repare também que no canto inferior esquerdo, está indicado que você está usando o WSL Ubuntu, mas poderia estar usando outro ambiente.
Docker
Terminada a configuração do VSCode, vamos para a cereja do bolo do WSL2: O Docker. Provavelmente todo mundo que já tentou usar o Docker for Windows teve uma experiência menos satisfatória que no Linux ou Mac, mas isso acabou.
Em conjunto com a Microsoft, o time do Docker fez uma arquitetura focada nas integrações com o WSL 2:
Dessa forma temos a sensação de estarmos mesmo utilizando o Docker no Linux, dado a agilidade nas respostas dos comandos.
Configuração
Logo no começo da instalação o Docker for Windows questiona se quer configurar o Docker para uso do WSL (infelizmente não capturei essa tela).
Terminada a instalação acessar as configurações do Docker (no ícone próximo ao relógio) com o botão direito e acesse a opção Settings.
Vá até Resources e depois WSL Integration e marque o Ubuntu-20.4:
Conclusão
Com essas ferramentas configuradas o desenvolvedor tem o melhor dos mundos à sua disposição, pois tem acesso ao ferramental do Linux (que geralmente é a plataforma que roda as aplicações desenvolvidas), porém tem toda a facilidade do uso do Windows 10.
O próximo passo agora é instalar os pacotes das suas linguagens e ferramentas favoritas, utilizando o terminal Bash do Ubuntu (no Windows Terminal).
Referências:
- Novidades no WSL 2
- Guia de instalação do Subsistema Windows para Linux para Windows 10
- Developing in WSL (https://docs.microsoft.com/pt-br/windows/wsl/install-win10)
- Docker ❤️ WSL 2 – The Future of Docker Desktop for Windows
- Entendendo WSL 2 | E uma curta história sobre Windows NT
Top comments (0)