Linux atraves do Windows com WSL2, Docker e ZSH
Utilizando o Docker via WSL2 no Windows como ambiente de desenvolvimento.
Geralmente eu utilizo um Container configurado com as ferramentas e ambientes que trabalho já definidos, porém como nem sempre estou utilizando um dispositivo com Linux, além de ver o lançamento do Windows Subsystem for Linux (WSL) 2, fiquei tentado em construir o mesmo ambiente que utilizo no GNU/Linux, no Windows 10.
Atualize o Windows
Para utilizar o WSL2, o Windows 10 deve estar atualizado com a versão 2004 (Build 19041) ou superior. Verifique se a versão que está utilizando atende o requisito, caso contrário, atualize.
Habilitar o Subsistema do Windows para Linux
Antes de instalar qualquer distribuição do Linux no Windows, você precisará primeiro habilitar o recurso opcional “Subsistema do Windows para Linux”. Abra o PowerShell como administrador e execute:
|
|
Esse procedimento irá instalar o WSL (v1), agora após reiniciar o computador, atualize para a versão 2.
Habilitar o recurso de Máquina Virtual (Hyper-V)
Antes de instalar o WSL 2, você precisa habilitar o recurso opcional Plataforma de Máquina Virtual
.
Abra o PowerShell como administrador e execute:
|
|
Atualizar o pacote do Kernel do Linux para o WSL 2
Baixar a versão mais recente do Pacote de atualização do kernel do Linux do WSL2 para computadores x64
Definir o WSL 2 como a sua versão padrão
Abra o PowerShell e execute este comando para definir o WSL 2 como a versão padrão ao instalar uma nova distribuição do Linux:
|
|
Instalar a distribuição do Linux Ubuntu 20.04 LTS
Abra a Microsoft Store e escolha sua distribuição do Linux favorita.
Neste exemplo, utilizaremos o Ubuntu 20.04 LTS.
Ajustando DNS do WSL
Comigo o DNS padrão que veio configurado no Ubuntu não estava resolvendo nomes, sendo assim, recomendo fortemente que você modifique para o servidor DNS público de sua preferência. Para isso, basta seguir os seguintes passos:
- Crie o arquivo
/etc/wsl.conf
e coloque o seguinte conteúdo
|
|
- No Powershell do Windows, rode o comando abaixo para finalizar o WSL em execução
|
|
-
Abra novamente o WSL
-
Modifique o arquivo
/etc/resolv.conf
para utilizar o DNS de sua preferência
|
|
- Repita os passos 2 e 3 que o DNS estará atualizado.
Instalando ferramentas básicas no WSL
Este passo é opcional, mas caso você necessite de algumas ferramentas específicas em seu WSL, basta instalar. Neste exemplo, deixo instalado algumas ferramentas para diagnóstico de rede e compilação, além de modificar meu bash padrão para o ZSH.
|
|
Instale o ZSH seguindo os passos descritos no post Maior produtividade no terminal com o Oh My ZSH.
Instalando o Docker
A própria Docker aconselha a utilização do aplicativo Docker para Windows. Porém resolvi instalar o Docker diretamente no WSL, como faço no Linux. Caso você ache melhor utilizar a aplicação para Windows, basta baixar e instalar. Mas caso queira instalar o Docker dentro do WSL, basta seguir os passos abaixo.
Agora iremos fazer a instalação básica do Docker no WSL para podermos criar nossos ambientes de desenvolvimento.
|
|
Adicionando as chaves oficiais do Docker
|
|
Adicionando o Repositório Oficial do Docker
|
|
Agora basta atualizar a lista de repositórios e instalar o docker-ce
e o docker-compose
|
|
sudo service docker start
Aproveite e adicione seu usuário ao grupo docker para possibilitar subir os containers sem a necessidade do sudo.
|
|
Confira se o Docker está rodando lançando um container
|
|
A saída deverá ser parecida com a imagem abaixo:
Agora basta testar se a comunicação está funcionando lançando o browser apontado para o localhost
Concluindo
Este post surgiu principalmente da curiosidade de ver o WSL2 em funcionamento, e claro, tentar portar o meu ambiente de ferramentas Linux para dentro do Windows 10. Provavelmente não utilizarei muito, mas pelo menos já serviu para escrever este Post =).
Acabei configurando as fontes powerline dentro no VS Code, ficou tudo funcional, caso alguém tenha interesse, só chamar no Telegram que trocamos uma ideia sobre o que deve ser feito para configurar tudo certinho.
Um forte abraço e até a próxima.