Mudanças entre as edições de "Guia rápido do WSL2 + Docker"
(36 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:VirtualMachinePlatform /all /norestart'' | |
− | + | <br> | |
− | + | 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'' |
'''Etapa 4 – Instalar a distribuição do Linux de sua escolha''' | '''Etapa 4 – Instalar a distribuição do Linux de sua escolha''' | ||
Linha 72: | Linha 72: | ||
'''Etapa 5 – Criando usuário root da instância WSL''' | '''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> | + | 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: | Parabéns, seu WSL2 já está funcionando: | ||
Linha 89: | Linha 90: | ||
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: | 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 | + | '''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. | 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. | + | '''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''' | + | '''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, | + | 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. |
[[Arquivo:arq1234wsl2.png|700px|thumb|nenhum]] | [[Arquivo:arq1234wsl2.png|700px|thumb|nenhum]] | ||
− | '''Etapa | + | '''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: | Crie um arquivo chamado '''.wslconfig''' na raiz da sua pasta de usuário (C:\Users\<seu_usuario>) e defina estas configurações: | ||
− | ''[wsl2]<br> | + | ''[wsl2]<br> |
− | options=metadata,umask=22,fmask=11<br> | + | options=metadata,umask=22,fmask=11<br> |
− | memory=8GB<br> | + | memory=8GB<br> |
− | processors=4<br> | + | processors=4<br> |
− | swap=2GB''<br> | + | 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'' |
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> | '''Instale o Docker Desktop''' <br> | ||
Baixe neste link: ''https://hub.docker.com/editions/community/docker-ce-desktop-windows'' e 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> | 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> | 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> | 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.
Na página da distribuição, selecione "Obter".
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:
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.
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.
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.
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.