Desenvolvimento com Docker no subsistema Windows para Linux (WSL)
Para trabalhar totalmente com um projeto Docker no WSL, você deve instalar o WSL 2. No momento em que este artigo foi escrito, seu uso só era possível como parte da participação no programa Windows Insider (WSL 2 está disponível nas versões 18932 e superiores). Também vale a pena mencionar separadamente que a versão Windows 10 Pro é necessária para instalar e configurar o Docker Desktop.
Primeiros Passos
Depois de ingressar no programa Insider e instalar as atualizações, você precisa instalar uma distribuição Linux (Ubuntu 18.04 neste exemplo) e Docker Desktop com WSL 2 Tech Preview:
Depois precisamos ter certeza de que usaremos o WSL v2. Para fazer isso, no terminal WSL ou PowerShell, execute os seguintes comandos:
wsl -l -v - veja qual versão está instalada atualmente. Se for 1, então avançamos na lista
wsl --set-version ubuntu 18.04 2 - para atualizar para a versão 2
wsl -s ubuntu 18.04 — instale o Ubuntu 18.04 como distribuição padrão
Agora você pode iniciar o Ubuntu 18.04 e configurá-lo (especifique seu nome de usuário e senha).
Instalando o Docker Desktop
Siga as instruções durante o processo de instalação. O computador exigirá uma reinicialização após a instalação e na primeira inicialização para habilitar o Hyper-V (que requer suporte do Windows 10 Pro).
Importante! Se o Docker Desktop relatar bloqueio pelo firewall, acesse as configurações do antivírus e faça as seguintes alterações nas regras do firewall (neste exemplo, o Kaspersky Total Security é usado como antivírus):
Vá para Configurações -> Segurança -> Firewall -> Configurar regras de pacotes -> Serviço local (TCP) -> Editar
Remova a porta 445 da lista de portas locais
Salvar
Após iniciar o Docker Desktop, selecione WSL 2 Tech Preview no menu de contexto.
Na janela que se abre, clique no botão Iniciar.
Docker e docker-compose agora estão disponíveis na distribuição WSL.
Importante! O Docker Desktop atualizado agora possui uma guia com WSL dentro da janela de configurações. O suporte WSL está habilitado lá.
Importante! Além da caixa de seleção de ativação WSL, você também precisa ativar sua distribuição WSL na guia Recursos->Integração WSL.
Lançar
O que foi inesperado foram os muitos problemas que surgiram ao tentar levantar contêineres de projetos localizados no diretório de usuários do Windows.
Erros de vários tipos associados ao lançamento de scripts bash (que geralmente começam na construção de contêineres para instalação das bibliotecas e distribuições necessárias) e outras coisas comuns para desenvolvimento em Linux nos fizeram pensar em colocar projetos diretamente no diretório de usuários do Ubuntu 18.04.
.
Da solução do problema anterior segue: como trabalhar com arquivos de projeto através de um IDE instalado no Windows. Como “melhor prática”, encontrei apenas uma opção para mim - trabalhar por meio do VSCode (embora seja fã do PhpStorm).
Após instalar a extensão mencionada acima, basta executar o comando code . no diretório do projeto quando o VSCode está em execução.
Neste exemplo, o nginx é necessário para acessar contêineres por meio do navegador. Instale-o através sudo apt-get install nginx Acontece que não foi tão simples. Primeiro, precisávamos atualizar a distribuição WSL executando sudo apt update && sudo apt dist-upgrade, e só depois disso inicie a instalação do nginx.
Importante! Todos os domínios locais não são registrados no arquivo /etc/hosts da distribuição Linux (nem está lá), mas no arquivo hosts (geralmente localizado em C:WindowsSystem32driversetchosts) do Windows 10.
fontes
Uma descrição mais detalhada de cada etapa pode ser encontrada aqui: