Sobes.tech
Middle

O que acontecerá com o contentor se o limite de memória for excedido?

sobes.tech IA

Resposta da IA

Quando o limite de memória definido para um contêiner Docker é excedido, os seguintes eventos principais ocorrem:

  1. Evento OOM (Out of Memory): O núcleo do sistema operativo detecta que um processo dentro do contêiner tenta alocar memória que excede o limite definido.
  2. Sinal Killed: O núcleo envia um sinal SIGKILL ao processo dentro do contêiner. Este sinal não pode ser capturado nem ignorado pela aplicação em execução no contêiner.
  3. Encerramento do contêiner: O processo dentro do contêiner termina de forma forçada. O daemon do Docker detecta que o processo principal do contêiner terminou e altera o estado do contêiner para Exited.
  4. Código de saída: O contêiner termina com um código de saída diferente de zero (normalmente 137), indicando que foi terminado de forma forçada pelo sinal.

Consequências para a aplicação e o sistema:

  • A aplicação em execução no contêiner termina abruptamente.
  • Se uma política de reinício (restart policy) estiver configurada, o Docker tentará reiniciar o contêiner.
  • Nos logs do contêiner e/ou do host será registado o evento OOM e a finalização do contêiner.

Exemplo de configuração do limite de memória:

# Exemplo de Docker Compose
services:
  myapp:
    image: myimage
    mem_limit: 512m # Define um limite de memória de 512 MB
# Exemplo de comando Docker
docker run -m 512m myimage # Define um limite de memória de 512 MB