Executando verificação de segurança...
2

Controle de memória RAM do Docker no Windows

Tive que escrever um Docker Compose de 400 linhas

Recentemente acompanhei alguns casos onde o docker aplicou a sua altíssima demanda por recursos da máquina, então resolvi fazer um breve resumo com dicas mega rápidas e super práticas (para Windows Users, a última dica é geral):

O que fazer então?

1. Crie um arquivo chamado .wslconfig

Salve ele na pasta do seu usuário (caminho: %userprofile% basta copiar e colar no win + r) e insira o seguinte conteúdo:

[wsl2]
memory=8GB #limitação de memória RAM do seu computador pra a VM do linux
processors=2 #limitação do número de cores do seu processador :)

1.1. Isso limitará alguns recursos do WSL na sua máquina.

Cuide para que os containers tenham recursos suficientes ou você terá um outro problema que é o excesso de I/O (disco) por falta de memória RAM. Este limite é imposto sobre a máquina virtual Linux, ou seja, ainda é possível limitar a memória de cada container, desde que dentro desse valor total.

2. Use o comando:

docker stats para verificar o uso de memória RAM em cada container, se ele estiver no máximo, configure mais memória (caso exista hehe).

3. Após um tempo...

Você terá muitas imagens docker estacionárias, considere higienizar as imagens e posteriormente o VHDX que o Windows/WSL cria. O caminho default desse arquivo é: %userprofile%\AppData\Local\Docker\wsl\data\ext4.vhdx
Para diminuir o vhdx, você pode usar a ferramenta hyper-v manager, basta instalar ela nos pacotes do windows, ou pesquise: how to shrink a VHDX hyper-v manager.

4. Limite a memória RAM de cada imagem:

Faça isso no seu Docker Compose file. Para isso, insira uma configuração como esta no serviço do Postgres (ex.):

services:
  postgres:
    mem_limit: 256m

Isto impedirá o Docker de disponibilizar toda a memória RAM alocada para o WSL, e também impedira o gestor de VMs do Windows de sair correndo para alocar um monte de memória no seu computador (o que resultará naquele famoso processo vmmemm com tonelas de RAM alocada).

Pro meu primeiro post era isto, espero que colabore com a gestão de recursos dessa ferramenta incrível que é o Docker.
Valeu.

Carregando publicação patrocinada...
2
1

Boa, também gosto de rodar o comando docker system prune -a 1x por semana para limpar lixo que fica para trás após excluir imagens e tal.

Obs.: Fiquei uns 4 meses sem rodar e quando vi tinha uns 40GB.

1

Top! Faço isso as vezes. Também gosto de usar o portainer para fazer a gestão via UI do que está ativo ou não, já tentou? É bem bacana para vc analisar as tags das imagens que estão ocupando sua máquina.