Marcio Cunha

Como ver o uso de memória RAM em containers Docker na prática

Aprenda a monitorar o consumo de memória RAM de seus containers Docker em tempo real usando comandos nativos da linha de comando de forma simples e rápida.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • O comando docker stats exibe métricas contínuas de uso de memória de todos os containers ativos no servidor.
  • A inspeção direta no sistema de arquivos do Linux via diretório cgroup revela detalhes profundos do consumo real.
  • Definir limites rígidos de memória no Docker Compose evita que um único container derrube o sistema inteiro.
  • O monitoramento preventivo ajuda a identificar gargalos e vazamentos de memória antes que gerem indisponibilidade.
  • Ferramentas de terminal combinadas com scripts simples automatizam o alerta precoce de estouro de RAM.

Por que monitorar a memória dos containers Docker

Quando gerenciamos aplicações isoladas, muitas vezes assumimos que os recursos alocados vão se comportar exatamente como planejado. Na prática, um container Docker pode começar a consumir mais memória do que o esperado devido a vazamentos de software ou picos repentinos de tráfego. Monitorar esses recursos em tempo real evita surpresas desagradáveis e garante a estabilidade do seu servidor principal. Assim como você já aprendeu como ver variáveis de ambiente em um container Docker rodando, acompanhar o consumo de hardware exige apenas os comandos certos no terminal.

O Docker utiliza o conceito de isolamento de processos do Linux, o que significa que cada aplicação roda em seu próprio ambiente, mas compartilha o mesmo núcleo do sistema operacional. Quando a memória RAM do servidor físico acaba, o kernel do Linux entra em ação com um mecanismo chamado Out-Of-Memory Killer, ou simplesmente OOM Killer. Esse mecanismo decide qual processo encerrar de forma abrupta para salvar o sistema operacional, e muitas vezes a vítima escolhida é justamente o banco de dados ou a API principal da sua aplicação.

Usando o comando nativo docker stats

A forma mais rápida e direta de visualizar o consumo de memória de todos os containers em execução é utilizando o comando nativo do Docker. Na prática, ele funciona como um gerenciador de tarefas simplificado direto no terminal, atualizando as informações segundo a segundo sem exigir instalações complexas. Para começar a monitorar o consumo em tempo real, basta abrir o seu terminal e digitar o comando padrão com privilégios adequados.

No seu terminal, execute o seguinte comando para listar o uso atual de CPU e RAM:

docker stats

Ao rodar esse comando, você verá uma tabela dinâmica exibindo o nome de cada container, a porcentagem de uso da CPU, o consumo atual de memória RAM em relação ao limite estabelecido e a taxa de entrada e saída de rede. Pressionar as teclas Ctrl mais C encerra a visualização interativa e devolve o controle do terminal. Se você quiser monitorar apenas um container específico sem a poluição visual dos demais, basta adicionar o nome ou o identificador dele logo após o comando principal.

Inspecionando os detalhes do cgroup no Linux

Por trás dos panos, o Docker utiliza um recurso do kernel do Linux chamado cgroups, abreviação para grupos de controle. Esse recurso é o responsável por limitar, accounting e isolar o uso de recursos de hardware para um grupo de processos. Se você quiser ir além do comando básico e entender exatamente quanta memória física está sendo usada sem considerar o cache, o sistema de arquivos virtual do Linux expõe essas métricas diretamente para leitura.

Você pode navegar até o diretório do cgroup correspondente ao seu container para ver estatísticas detalhadas. No terminal, execute os comandos abaixo para localizar e ler o arquivo de estatísticas de memória do Docker:

cd /sys/fs/cgroup/docker/
cat memory.current

O valor retornado por esse comando é exibido em bytes, representando o consumo exato de memória RAM naquele exato microssegundo. Dividir esse número por uma megabyte, que equivale a 1024 multiplicado por 1024, revela o total exato em megabytes. Essa técnica é extremamente útil quando você precisa criar scripts automatizados de monitoramento que enviam alertas via Telegram ou e-mail sempre que o consumo ultrapassa um patamar crítico de segurança.

Definindo limites e evitando surpresas na RAM

Monitorar é essencial, mas prevenir problemas estruturais na arquitetura dos seus serviços é ainda melhor. Sempre que você inicia um container ou escreve um arquivo de configuração do Docker Compose, é altamente recomendável definir restrições claras para o uso de memória. Sem essas travas, um único container com falha pode sugar toda a memória RAM disponível no servidor, afetando os demais serviços que rodam na mesma máquina física.

Veja um exemplo prático de como limitar o consumo de memória de um serviço no seu arquivo docker-compose.yml:

version: '3.8'
services:
webapp:
image: nginx:latest
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M

Neste exemplo configurado, o container nunca poderá ultrapassar quinhentos e doze megabytes de RAM, garantindo que o sistema operacional mantenha uma margem de segurança intacta. Se a aplicação tentar consumir mais do que isso, o Docker aplicará o limite rigorosamente. Essa prática simples transforma um ambiente instável em uma infraestrutura previsível e resiliente contra falhas de software imprevistas.

Considerações finais sobre o monitoramento de containers

Manter o controle sobre o consumo de memória dos containers Docker é uma habilidade indispensável para qualquer desenvolvedor ou administrador de sistemas moderno. Combinar comandos nativos como o docker stats com boas práticas de limites de recursos garante que suas aplicações rodem de forma fluida e sem surpresas. O monitoramento contínuo ajuda a antecipar manutenções, otimizar custos de infraestrutura e manter seus serviços sempre disponíveis para os usuários finais.

Compreender o comportamento dos seus processos em tempo real transforma a gestão de servidores de uma tarefa reativa em uma estratégia proativa de engenharia. Comece hoje mesmo a auditar o consumo de RAM dos seus ambientes e implemente limites claros em seus arquivos de orquestração para construir um ecossistema mais seguro e estável.