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:
- 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.
- Sinal Killed: O núcleo envia um sinal
SIGKILLao processo dentro do contêiner. Este sinal não pode ser capturado nem ignorado pela aplicação em execução no contêiner. - 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. - 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