Conteúdo
Instalação WSL
A instalação do Docker no WSL 2 é idêntica a instalação do Docker em sua própria distribuição Linux, portanto se você tem o Ubuntu é igual ao Ubuntu, se é Fedora é igual ao Fedora. A documentação de instalação do Docker no Linux por distribuição está aqui, mas vamos ver como instalar no Ubuntu.
Instalação do WSL 2
Todas as instruções abaixo são para o Windows 10/11.
Windows Update
Verifique se seu Windows está atualizado, pois o WSL 2 depende de uma versão atualizada do Hyper-V. Verifique o Windows Update.
Atualizar o WSL
Com a versão 2004 do Windows 10 ou Windows 11, o WSL já estará presente em sua máquina, execute o comando para pegar a versão mais recente do WSL:
wsl --update
Atribuir a versão default do WSL para a versão 2
A versão 2 normalmente é a default, mas a versão 1 do WSL pode estar como default, execute o comando abaixo para definir como default a versão 2:
wsl --set-default-version 2
Instale o Ubuntu
Execute o comando:
wsl --install
Este comando irá instalar o Ubuntu como o Linux padrão.
Se você quiser instalar uma versão diferente do Ubuntu, execute o comando wsl -l -o. Será listado todas as versões de Linux disponíveis. Instale a versão escolhida com o comando wsl --install -d nome-da-distribuicao.
Sugerimos o Ubuntu (sem versão) por ser uma distribuição popular e que já vem com várias ferramentas úteis para desenvolvimento instaladas por padrão.
Após o término do comando, você deverá criar um nome de usuário que poderá ser o mesmo da sua máquina (crie um nome de usuário sem espaço e caracteres especiais) e uma senha (defina uma senha forte). Esta senha será usada para instalar pacotes e realizar operações de superusuário.
Para abrir uma nova janela do Ubuntu, basta digitar Ubuntu no menu iniciar e clicar no ícone do Ubuntu.
Recomendamos o uso do Windows Terminal como terminal padrão para desenvolvimento no Windows. Ele agregará o shell do Ubuntu, assim como o PowerShell e o CMD em uma única janela, além de permitir personalização de cores e temas
Instalar o Docker com Docker Engine (Docker Nativo)
Quem está migrando de Docker Desktop para Docker Engine, temos duas opções
- Desinstalar o Docker Desktop.
- Desativar o Docker Desktop Service nos serviços do Windows. Esta opção permite que você utilize o Docker Desktop, se necessário, para a maioria dos usuários a desinstalação do Docker Desktop é a mais recomendada. Se você escolheu a 2º opção, precisará excluir o arquivo ~/.docker/config.json e realizar a autenticação com Docker novamente através do comando "docker login"
Se necessitar integrar o Docker com outras IDEs que não sejam o VSCode
O VSCode já se integra com o Docker no WSL desta forma através da extensão Remote WSL ou Remote Container.
É necessário habilitar a conexão ao servidor do Docker via TCP. Vamos aos passos:
- Crie o arquivo /etc/docker/daemon.json:
sudo echo '{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}' > /etc/docker/daemon.json- Reinicie o Docker:
sudo service docker restartApós este procedimento, vá na sua IDE e para conectar ao Docker escolha a opção TCP Socket e coloque a URL
http://IP-DO-WSL:2375. Seu IP do WSL pode ser encontrado com o comandocat /etc/resolv.conf.Se caso não funcionar, reinicie o WSL com o comando
wsl --shutdowne inicie o serviço do Docker novamente.
Execute os comandos:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
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
OBSERVAÇÃO: Se você estiver usando uma distribuição diferente do Ubuntu, veja os comandos de instalação no documentação do Docker https://docs.docker.com/engine/install/
Dê permissão para rodar o Docker com seu usuário corrente:
sudo usermod -aG docker $USER
Reiniciar o WSL via linha de comando do Windows para que não seja necessário autorização root para rodar o comando docker:
wsl --shutdown
Acessar novamente o Ubuntu e iniciar o serviço do Docker:
sudo service docker start
Este comando acima terá que ser executado toda vez que o Linux for reiniciado. Se caso o serviço do Docker não estiver executando, mostrará esta mensagem de erro ao rodar comando docker:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Erro ao iniciar o Docker no Ubuntu 22.04
Se mesmo ao iniciar o serviço do Docker acontecer o seguinte erro ou similar:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?Rode o comandosudo update-alternatives --config iptablese escolha a opção 1iptables-legacyRode novamente o
sudo service docker start. Rode algum comando Docker comodocker pspara verificar se está funcionando corretamente. Se não mostrar o erro acima, está ok.
Iniciar o Docker automaticamente no WSL
Apenas para Windows 11 ou Windows 10 com o update KB5020030
É possível especificar um comando padrão para ser executados sempre que o WSL for iniciado, isto permite que já coloquemos o serviço do docker para iniciar automaticamente. Edite o arquivo /etc/wsl.conf:
Rode o comando para editar:
sudo vim /etc/wsl.conf
Aperte a letra i (para entrar no modo de inserção de conteúdo) e cole o conteúdo:
[boot]
command = service docker start
Docker com Systemd
Caso tenha ativado o systemd, na maioria dos casos o Docker iniciará automaticamente, portanto se você se tem a linha command = service docker start no /etc/wsl.conf, comente-a com # e reinicie o WSL com o comando wsl --shutdown.
Caso contrário, você pode inicia-lo automaticamente usando os comandos:
sudo systemctl enable docker.service sudo systemctl enable containerd.service
É necessário reiniciar o WSL com o comando wsl --shutdown para que as mudanças tenham efeito.
Pronto, basta reiniciar o WSL com o comando wsl --shutdown no DOS ou PowerShell para testar. Após abrir o WSL novamente, digite o comando docker ps para avaliar se o comando não retorna a mensagem acima: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Dicas e truques básicos com WSL 2
Performance ao usar o 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. O ideal é executar tudo dentro do Linux, no caminho /home/seu_usuario.
A ideia é você pegar todos os seus projetos que estão no C: e copia-los para o Linux, no /home/seu_usuario. Assim, tudo estará dentro do Linux e a performance será melhor.
A princípio a ideia de fazer tudo no Linux pode parecer estranha, mas é a melhor forma de se obter performance com o WSL 2.
Windows Terminal
O Windows Terminal é um terminal que agrega vários terminais em uma única janela, como PowerShell, CMD e WSL. Ele permite personalização de cores, temas, atalhos e muito mais.
Instale-o pelo Windows Store.
A experiência de usar o Windows Terminal é muito melhor que o terminal padrão do Windows, use ele para desenvolver no Windows e também para acessar o WSL 2.
Acessar disco e outros dispositivos do Windows
O WSL 2 tem acesso a todo o disco rígido do Windows, basta acessar o caminho /mnt/c para acessar o disco C: do Windows. Se você tiver mais discos, eles estarão disponíveis em /mnt/d, /mnt/e, etc.
O /mnt é um ponto de montagem do Linux, onde ele monta os dispositivos do Windows.
Acessar o WSL 2 pelo Windows
É possível acessar o WSL 2 pelo Windows Explorer, basta digitar \\wsl.localhost$ na barra de endereços e será mostrado as distribuições Linux instaladas no WSL 2.
Também é possível acessar pelo ícone Linux que fica do lado esquerdo do Windows Explorer. Talvez sua versão do Windows não tenha este ícone, então use o caminho \\wsl.localhost$.
Também é possível de dentro do Linux abrir uma pasta no Windows Explorer, basta digitar o comando explorer.exe . e a pasta atual será aberta no Windows Explorer.

