Назад к вопросам
Middle
72
questionbank
Что произойдет с контейнером, если будет превышен лимит по памяти?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
При превышении лимита памяти, установленного для контейнера в Docker, происходят следующие основные события:
- OOM (Out of Memory) Event: Ядро операционной системы фиксирует, что процесс внутри контейнера пытается выделить память, превышающую установленный лимит.
- Сигнал Killed: Ядро отправляет процессу внутри контейнера сигнал
SIGKILL. Этот сигнал не может быть перехвачен или проигнорирован приложением, запущенным в контейнере. - Завершение контейнера: Процесс внутри контейнера принудительно завершается. Docker демон обнаруживает, что главный процесс контейнера завершился, и меняет статус контейнера на
Exited. - Код выхода: Контейнер завершается с ненулевым кодом выхода (обычно 137), что указывает на то, что он был принудительно завершен сигналом.
Последствия для приложения и системы:
- Приложение, запущенное в контейнере, аварийно завершается.
- Если настроена политика перезапуска (
restart policy), Docker попытается перезапустить контейнер. - В логах контейнера и/или хоста будет зарегистрировано событие OOM и завершение контейнера.
Пример установки лимита памяти:
# Docker Compose example
services:
myapp:
image: myimage
mem_limit: 512m # Sets a memory limit of 512 MB
# Docker run example
docker run -m 512m myimage # Sets a memory limit of 512 MB