WSL2 - Movendo docker-desktop-data para outro lugar - Igor Jacaúna
O Windows 10 vem com WSL2, tornando possível usar o Docker integrado às distribuições Linux que rodam no Windows 10. Aqui vamos mostrar como colocar os arquivos em outro lugar uma vez que não é possível apenas mudando as configurações no Docker.
Eu costumo usar uma máquina equipada com SSD e um HD. Como uso bastante docker, as imagens podem ocupar um espaço considerável no SSD. Então uma alternativa seria configurar o Docker para salvar as imagens em outro lugar. Mas com Docker usando WSL2 não funciona mudar as configurações do Docker, é necessário mover a distro usada pelo Docker no WSL2.
O Docker para Windows quando usado com WSL2 salva um arquivo *.vhdx, onde ficam os dados usados pelo Docker, no caminho %LOCALAPPDATA%\Docker\wsl\data. O que de certa forma é uma distro usada pelo Docker para subir os containers.
Se você rodar:
Vai listar as distros que o WSL tem na sua máquina:
Podemos observar que existe a docker-desktop-data. É aqui que o Docker salva as imagens, volumes nomeados, etc.
Então, não basta inserir nas configurações do Docker um data-root e dizer para qual diretório salvar. Se fizer isso, o Docker não vai funcionar. Lembrando que isso se aplica apenas quando usado com WSL2
Então, é necessário fazer um trabalho com o WSL. Vamos exportar para um arquivo .tar a distro utilizada pelo Docker e depois importar para outro diretório.
Primeiro, vamos parar o serviço do Docker
Vamos parar todas as distros WSL em execução com o comando wsl --shutdown
Agora para exportar a distro: wsl --export docker-desktop-data "docker-desktop-data.tar"
Depois de exportar, desativamos a distro: wsl --unregister docker-desktop-data
Criamos o diretório onde vai ficar, no meu caso é D:\wsldata\docker-desktop-data
Agora só importar para um novo diretório: wsl --import docker-desktop-data "D:\wsldata\docker-desktop-data" "docker-desktop-data.tar" --version 2
Depois de importar você pode excluir o arquivo docker-desktop-data.tar
No passo 6 é importante o parâmetro --version 2 pois indica sobre qual versão estamos importando a distro e como é pra usar com Docker tem que ser a versão 2 ou seja wsl2
Pronto, agora você pode reiniciar o serviço do Docker e vai estar tudo ok. As imagens, volumes nomeados, etc. vão estar no novo diretório, poupando espaço no SSD.
Se você quiser fazer isso para outras distros que não necessáriamente do Docker, é bom atentar que esse processo de importação acaba definindo o usuário padrão como root, pra resolver isso basta editar o arquivo /etc/wsl.conf e incluir:
Óbvio que não esquecendo de substituir <username> pelo nome do usuário desejado que seja o padrão da distro.