Mudanças entre as edições de "Guia rápido do WSL2 + Docker"

De Redome
Ir para: navegação, pesquisa
 
(47 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 41: Linha 41:
 
Execute os seguintes comandos no PowerShell em modo administrador:
 
Execute os seguintes comandos no PowerShell em modo administrador:
  
''$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart<br>
+
    '' dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart<br>
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart<br>
+
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart''
''
+
<br>
  
Abra o PowerShell e digite o comando ''$ wsl'', se não funcionar reinicie sua máquina.
+
    Digite o comando '' wsl'', se não funcionar reinicie sua máquina.
  
'''Etapa 2 – Baixar o pacote de atualização do kernel do Linux'''
+
'''Etapa 2 – Baixar o pacote de atualização do kernel do Linux e instale o pacote.'''
  
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
+
    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  
 
'''Etapa 3 – Definir o WSL 2 como a sua versão padrão'''
 
'''Etapa 3 – Definir o WSL 2 como a sua versão padrão'''
Linha 55: Linha 55:
 
A versão 1 do WSL é a padrão no momento, atribua a versão default para a versão 2, assim todas as distribuições Linux instaladas serão já por default da versão 2. Execute o comando com o PowerShell:
 
A versão 1 do WSL é a padrão no momento, atribua a versão default para a versão 2, assim todas as distribuições Linux instaladas serão já por default da versão 2. Execute o comando com o PowerShell:
  
''$ wsl --set-default-version 2''
+
    '' wsl --set-default-version 2''
  
 
'''Etapa 4 – Instalar a distribuição do Linux de sua escolha'''
 
'''Etapa 4 – Instalar a distribuição do Linux de sua escolha'''
Linha 61: Linha 61:
 
Escolha sua distribuição Linux preferida no aplicativo Windows Store, sugerimos o Ubuntu por ser uma distribuição popular e que já vem com várias ferramentas instaladas por padrão.
 
Escolha sua distribuição Linux preferida no aplicativo Windows Store, sugerimos o Ubuntu por ser uma distribuição popular e que já vem com várias ferramentas instaladas por padrão.
  
 +
[[Arquivo:arq1wsl2.png|700px|thumb|nenhum]]
  
  
 +
Na página da distribuição, selecione "Obter".
 +
 +
[[Arquivo:arq12wsl2.png|700px|thumb|nenhum]]
  
[[Arquivo:arq1wsl2.jpg]]
 
  
  
 +
'''Etapa 5 – Criando usuário root da instância WSL'''
  
 +
    Ao iniciar o Linux instalado, você deverá criar um nome de usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.
 +
<br>
 +
Parabéns, seu WSL2 já está funcionando:
  
 +
[[Arquivo:arq123wsl2.png|700px|thumb|nenhum]]
  
Na página da distribuição, selecione "Obter".
 
  
  
 +
'''Etapa 6 – Configurações Opcionais'''
  
 +
'''Desinstale o Hyper-V'''
  
 +
Agora que temos o WSL 2 não precisamos mais do Hyper-V, desabilite-o em Painel de Controle > Programas e Recursos (se você tiver instalado o Hyper-V).
  
 +
'''Alterar a versão do WSL 1 de uma distribuição para a versão 2'''
  
 +
Se você já tiver o WSL 1 na máquina e acabou de instalar a versão 2, pode-se converter sua distribuição Linux WSL 1 para WSL 2, execute o comando com o PowerShell:
  
 +
    '' wsl --set-version <distribution name> 2''
  
  
 +
'''Etapa 7 – Instalar o Terminal do Windows'''
  
'''Etapa 5 – Criando usuário root da instância WSL'''
+
O Windows Terminal construído pela própria Microsoft que permite rodar terminais em abas, alterar cores e temas, configurar atalhos e muito mais.
 +
'''Instale-o pelo Windows Store''' e use estas configurações padrões para habilitar WSL 2, Git Bash e o tema drácula e alguns atalhos.
 +
 
 +
    '''https://github.com/codeedu/wsl2-docker-quickstart/blob/master/windows-terminal-settings.json'''
  
Ao iniciar o Linux instalado, você deverá criar um nome de usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.
+
Para sobrescrever as configurações clique a seta para baixo do lado das abas e em configurações, abrirá as configurações do Windows Terminal, selecione opção 'Abrir o arquivo Json", abra no bloco de notas, subescreva e salve.
Parabéns, seu WSL2 já está funcionando:
 
  
Etapa 5 – Configurações Opcionais
+
[[Arquivo:arq1234wsl2.png|700px|thumb|nenhum]]
Desinstale o Hyper-V
 
Agora que temos o WSL 2 não precisamos mais do Hyper-V, desabilite-o em Painel de Controle > Programas e Recursos (se você tiver instalado o Hyper-V).
 
Alterar a versão do WSL 1 de uma distribuição para a versão 2
 
Se você já tiver o WSL 1 na máquina e acabou de instalar a versão 2, pode-se converter sua distribuição Linux WSL 1 para WSL 2, execute o comando com o PowerShell:
 
$ wsl --set-version <distribution name> 2
 
  
  
Etapa 6 Instalar o Terminal do Windows
+
'''Etapa 8 Definindo Recursos da Máquina'''
O Windows Terminal construído pela própria Microsoft que permite rodar terminais em abas, alterar cores e temas, configurar atalhos e muito mais.
 
Instale-o pelo Windows Store e use estas configurações padrões para habilitar WSL 2, Git Bash e o tema drácula e alguns atalhos.
 
https://github.com/codeedu/wsl2-docker-quickstart/blob/master/windows-terminal-settings.json
 
Para sobrescrever as configurações clique a seta para baixo do lado das abas e em configurações, abrirá as configurações do Windows Terminal, apenas cole o conteúdo do arquivo JSON e salve.
 
  
Etapa 7 – Definindo Recursos da Máquina
+
Crie um arquivo chamado '''.wslconfig''' na raiz da sua pasta de usuário (C:\Users\<seu_usuario>) e defina estas configurações:
Crie um arquivo chamado .wslconfig na raiz da sua pasta de usuário (C:\Users\<seu_usuario>) e defina estas configurações:
 
  
[wsl2]
+
    ''[wsl2]<br>
options=metadata,umask=22,fmask=11
+
    options=metadata,umask=22,fmask=11<br>
memory=8GB
+
    memory=8GB<br>
processors=4
+
    processors=4<br>
swap=2GB
+
    swap=2GB''
 +
<br>
  
 
Para aplicar estas configurações é necessário reiniciar as distribuições Linux, então sugerimos executar no PowerShell o comando:  
 
Para aplicar estas configurações é necessário reiniciar as distribuições Linux, então sugerimos executar no PowerShell o comando:  
  
$ wsl –shutdown
+
    ''wsl --shutdown''
  
 
Este comando vai desligar todas as instâncias WSL 2 ativas e basta abrir o terminal novamente para usa-la já com as novas configurações.
 
Este comando vai desligar todas as instâncias WSL 2 ativas e basta abrir o terminal novamente para usa-la já com as novas configurações.
 +
 +
 +
----
 +
 +
 +
'''Etapa 9 – Integrar Docker com WSL 2''' <br>
 +
  No ubunto
 +
 +
'''Opção 1'''
 +
 +
'''Instale os pré-requisitos:'''<br>
 +
 +
    sudo apt update && sudo apt upgrade<br>
 +
    sudo apt remove docker docker-engine docker.io containerd runc<br>
 +
    sudo apt-get install \
 +
    apt-transport-https \
 +
    ca-certificates \
 +
    curl \
 +
    gnupg \
 +
    lsb-release
 +
<br>
 +
 +
'''Adicione o repositório do Docker na lista de sources do Ubuntu:'''<br>
 +
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg<br>
 +
    echo \
 +
    "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
 +
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 +
 +
'''Instale o Docker Engine'''<br>
 +
    sudo apt-get update<br>
 +
    sudo apt-get install docker-ce docker-ce-cli containerd.io
 +
<br>
 +
 +
'''Dê permissão para rodar o Docker com seu usuário corrente:'''<br>
 +
    sudo usermod -aG docker $USER
 +
<br>
 +
 +
'''Instale o Docker Compose:'''<br>
 +
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose<br>
 +
    sudo chmod +x /usr/local/bin/docker-compose<br>
 +
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
 +
<br>
 +
 +
'''Inicie o serviço do Docker:'''<br>
 +
    sudo service docker start<br>
 +
Este comando acima terá que ser executado toda vez que Linux for reiniciado. <br>
 +
Se caso o serviço do Docker não estiver executando, mostrará esta mensagem de erro:<br>
 +
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
 +
<br>
 +
 +
'''Opção 2'''<br>
 +
'''Instale o Docker Desktop''' <br>
 +
 +
Baixe neste link: ''https://hub.docker.com/editions/community/docker-ce-desktop-windows'' e instale o Docker Desktop. <br>
 +
 +
[[Arquivo:docker_funcionando_dentro_do_wsl2.png|700px|thumb|nenhum]]
 +
 +
Habilite o Docker dentro do WSL 2 <br>
 +
Clique no ícone do Docker perto do relógio -> Settings -> Settings no topo -> Resources -> WSL Integration. <br>
 +
Habilite Enable integration with my default WSL distro e habilite sua versão Linux. <br>
 +
 +
[[Arquivo:docker1.png|700px|thumb|nenhum]]
 +
 +
 +
[[Arquivo:docker2.png|700px|thumb|nenhum]]
 +
 +
 +
'''Use BuildKit and multi-stage builds''' <br>
 +
 +
Acrescente '''export DOCKER_BUILDKIT=1''' no final do arquivo '''.profile''' do seu usuário do Linux para ganhar mais performance ao realizar builds com Docker.<br>
 +
Execute o comando '''$ source ~/.profile''' para carregar esta variável de ambiente no ambiente do seu WSL 2.
 +
 +
 +
----
 +
 +
 +
'''Dicas e truques básicos com WSL 2'''
 +
 +
    • A performance do WSL 2 está em se executar tudo dentro do Linux, por isso evite executar seus projetos com ou sem
 +
      Docker do caminho '''/mnt/c''', pois você perderá performance.
 +
 +
    • Para abrir o terminal do WSL basta digitar o nome da distribuição no menu Iniciar ou executar '''C:\Windows\System32\wsl.exe'''.
 +
 +
    • O sistema de arquivos do Windows 10 é acessível em '''/mnt'''.
 +
 +
    • É possível acessar o sistema de arquivos do Linux pela rede do Windows, digite '''\\wsl$''' no Windows Explorer.
 +
 +
    • É possível acessar uma pasta no Windows Explorer digitando o comando explorer.exe ..
 +
 +
    • É possível abrir uma pasta ou arquivo com o Visual Studio Code digitando o comando '''code .''' ou '''code meu_arquivo.ext'''.
 +
 +
    • Incrivelmente é possível acessar executáveis do Windows no terminal do Linux executando-os com .exe no final (não significa que funcionarão corretamente).
 +
 +
    • Execute o comando wsl -l -v com o PowerShell para ver as versões de Linux instaladas e seu status atual(parado ou rodando).
 +
 +
    • Execute o comando wsl --shutdown com o PowerShell para desligar todas as distribuições Linux que estão rodando no momento (ao executar o
 +
        comando, as distribuições do Docker também serão desligadas e o Docker Desktop mostrará uma notificação ao lado do relógio perguntando se
 +
        você quer iniciar as distribuições dele novamente, se você não aceitar terá que iniciar o Docker novamente com o ícone perto do relógio do Windows).
 +
 +
    • Se verificar que o WSL 2 está consumindo muitos recursos da máquina, execute os seguintes comandos dentro do terminal WSL 2 para liberar memória RAM:
 +
        ''$ echo 1 | sudo tee /proc/sys/vm/drop_caches''
 +
        ''$ echo 3 | sudo tee /proc/sys/vm/drop_caches''
 +
     
 +
   
 +
    • Execute com o PowerShell o comando ''$ wsl --t <distribution name>'' para desligar somente uma distribuição Linux específica.

Edição atual tal como às 18h47min de 6 de outubro de 2021

WSL 2 – Windows Subsystem for Linux 2


A principal proposta de valor do WSL é que você pode ter Linux E Windows. Como desenvolvedor, isso é bastante atraente, pois você pode desenvolver
para ambas as plataformas em ambas as plataformas, mas com apenas uma máquina e sem ter que mudar constantemente de SO.

   • Linux funcionando dentro do Windows como subsistema;
   • Funciona em cima do Virtual Machine Platform;
   • Permite o controle do sistema através de um terminal;
   • Execução do kernel completo do Linux;
   • Compartilhamento completa de chamada do sistema;
   • Melhor desempenho para acesso aos arquivos dentro do Linux.

Requerimentos Mínimos:

   • Windows 10 Home ou Professional;
   • Atualização 20.04.;
   • 4GB de RAM;
   • Virtual Machine Platform;
   • Docker Desktop >= 2.3;
   • Windows Terminal.

Podemos dizer que o WSL 2 tem acesso quase que total ao recursos de sua máquina. Ele tem acesso por padrão:

   • A todo disco rígido.
   • A usar completamente os recursos de processamento.
   • A usar 80% da memória RAM disponível.
   • A usar 25% da memória disponível para SWAP.




Instalação do WSL 2

Pode ser que seu Windows 10 já seja igual ou superior a 20.04, verifique isto acessando o menu de notificações perto do relógio > Todas as configurações > Sistema > Sobre.

Etapas de instalação manual

Etapa 1 – Habilitar o Subsistema do Windows para Linux

Execute os seguintes comandos no PowerShell em modo administrador:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart


   Digite o comando  wsl, se não funcionar reinicie sua máquina.

Etapa 2 – Baixar o pacote de atualização do kernel do Linux e instale o pacote.

   https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

Etapa 3 – Definir o WSL 2 como a sua versão padrão

A versão 1 do WSL é a padrão no momento, atribua a versão default para a versão 2, assim todas as distribuições Linux instaladas serão já por default da versão 2. Execute o comando com o PowerShell:

    wsl --set-default-version 2

Etapa 4 – Instalar a distribuição do Linux de sua escolha

Escolha sua distribuição Linux preferida no aplicativo Windows Store, sugerimos o Ubuntu por ser uma distribuição popular e que já vem com várias ferramentas instaladas por padrão.

Arq1wsl2.png


Na página da distribuição, selecione "Obter".

Arq12wsl2.png


Etapa 5 – Criando usuário root da instância WSL

   Ao iniciar o Linux instalado, você deverá criar um nome de usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.


Parabéns, seu WSL2 já está funcionando:

Arq123wsl2.png


Etapa 6 – Configurações Opcionais

Desinstale o Hyper-V

Agora que temos o WSL 2 não precisamos mais do Hyper-V, desabilite-o em Painel de Controle > Programas e Recursos (se você tiver instalado o Hyper-V).

Alterar a versão do WSL 1 de uma distribuição para a versão 2

Se você já tiver o WSL 1 na máquina e acabou de instalar a versão 2, pode-se converter sua distribuição Linux WSL 1 para WSL 2, execute o comando com o PowerShell:

    wsl --set-version <distribution name> 2


Etapa 7 – Instalar o Terminal do Windows

O Windows Terminal construído pela própria Microsoft que permite rodar terminais em abas, alterar cores e temas, configurar atalhos e muito mais. Instale-o pelo Windows Store e use estas configurações padrões para habilitar WSL 2, Git Bash e o tema drácula e alguns atalhos.

   https://github.com/codeedu/wsl2-docker-quickstart/blob/master/windows-terminal-settings.json

Para sobrescrever as configurações clique a seta para baixo do lado das abas e em configurações, abrirá as configurações do Windows Terminal, selecione opção 'Abrir o arquivo Json", abra no bloco de notas, subescreva e salve.

Arq1234wsl2.png


Etapa 8 – Definindo Recursos da Máquina

Crie um arquivo chamado .wslconfig na raiz da sua pasta de usuário (C:\Users\<seu_usuario>) e defina estas configurações:

   [wsl2]
options=metadata,umask=22,fmask=11
memory=8GB
processors=4
swap=2GB


Para aplicar estas configurações é necessário reiniciar as distribuições Linux, então sugerimos executar no PowerShell o comando:

   wsl --shutdown 

Este comando vai desligar todas as instâncias WSL 2 ativas e basta abrir o terminal novamente para usa-la já com as novas configurações.




Etapa 9 – Integrar Docker com WSL 2

  No ubunto

Opção 1

Instale os pré-requisitos:

   sudo apt update && sudo apt upgrade
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release


Adicione o repositório do Docker na lista de sources do Ubuntu:

   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instale o Docker Engine

   sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io


Dê permissão para rodar o Docker com seu usuário corrente:

   sudo usermod -aG docker $USER


Instale o Docker Compose:

   sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose


Inicie o serviço do Docker:

   sudo service docker start

Este comando acima terá que ser executado toda vez que Linux for reiniciado.
Se caso o serviço do Docker não estiver executando, mostrará esta mensagem de erro:

   Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


Opção 2
Instale o Docker Desktop

Baixe neste link: https://hub.docker.com/editions/community/docker-ce-desktop-windows e instale o Docker Desktop.

Docker funcionando dentro do wsl2.png

Habilite o Docker dentro do WSL 2
Clique no ícone do Docker perto do relógio -> Settings -> Settings no topo -> Resources -> WSL Integration.
Habilite Enable integration with my default WSL distro e habilite sua versão Linux.

Docker1.png


Docker2.png


Use BuildKit and multi-stage builds

Acrescente export DOCKER_BUILDKIT=1 no final do arquivo .profile do seu usuário do Linux para ganhar mais performance ao realizar builds com Docker.
Execute o comando $ source ~/.profile para carregar esta variável de ambiente no ambiente do seu WSL 2.




Dicas e truques básicos com WSL 2

   • A performance do WSL 2 está em se executar tudo dentro do Linux, por isso evite executar seus projetos com ou sem 
      Docker do caminho /mnt/c, pois você perderá performance.
   • Para abrir o terminal do WSL basta digitar o nome da distribuição no menu Iniciar ou executar C:\Windows\System32\wsl.exe.
   • O sistema de arquivos do Windows 10 é acessível em /mnt.
   • É possível acessar o sistema de arquivos do Linux pela rede do Windows, digite \\wsl$ no Windows Explorer.
   • É possível acessar uma pasta no Windows Explorer digitando o comando explorer.exe ..
   • É possível abrir uma pasta ou arquivo com o Visual Studio Code digitando o comando code . ou code meu_arquivo.ext.
   • Incrivelmente é possível acessar executáveis do Windows no terminal do Linux executando-os com .exe no final (não significa que funcionarão corretamente).
   • Execute o comando wsl -l -v com o PowerShell para ver as versões de Linux instaladas e seu status atual(parado ou rodando).
   • Execute o comando wsl --shutdown com o PowerShell para desligar todas as distribuições Linux que estão rodando no momento (ao executar o 
       comando, as distribuições do Docker também serão desligadas e o Docker Desktop mostrará uma notificação ao lado do relógio perguntando se 
       você quer iniciar as distribuições dele novamente, se você não aceitar terá que iniciar o Docker novamente com o ícone perto do relógio do Windows).
   • Se verificar que o WSL 2 está consumindo muitos recursos da máquina, execute os seguintes comandos dentro do terminal WSL 2 para liberar memória RAM: 
       $ echo 1 | sudo tee /proc/sys/vm/drop_caches 
       $ echo 3 | sudo tee /proc/sys/vm/drop_caches
     
   
   • Execute com o PowerShell o comando $ wsl --t <distribution name> para desligar somente uma distribuição Linux específica.