Docker LinuxDocker Desktop

Docker: В контейнере не хватает памяти при запуске приложения

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Контейнер может завершаться с кодом 137, OOMKilled=true или ошибкой Out of memory внутри приложения. Код 137 не всегда означает нехватку памяти: процесс мог получить SIGKILL по иной причине. Сверяйте несколько признаков.

В этой статье
  1. Как выглядит неисправность
  2. Причины и признаки
  3. Пошаговое устранение
  4. Как проверить результат
  5. Если проблема осталась

#Как выглядит неисправность

Контейнер может завершаться с кодом 137, OOMKilled=true или ошибкой Out of memory внутри приложения. Код 137 не всегда означает нехватку памяти: процесс мог получить SIGKILL по иной причине. Сверяйте несколько признаков.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Жёсткий лимит памяти DockerПриложение достигает --memory / mem_limitOOMKilled=true в inspect, растёт MEMORY в statsСнизить потребление или обоснованно поднять лимит
Утечка памяти в приложенииПотребление растёт даже на постоянной нагрузкеПовторные OOM после продолжительной работыИзмерить память и исправить приложение

#Пошаговое устранение

  1. 1. Сопоставьте статус, код выхода и признак OOMВ терминале Docker выполните docker ps -a и docker inspect ... ИМЯ. Если OOMKilled=true — Docker зафиксировал убийство из-за памяти. Если только ExitCode=137, проверьте события и действия оператора.
    Linux · Терминал (Bash)Команда
    Чтение состояния контейнера.
    docker inspect --format '{{.State.ExitCode}} oom={{.State.OOMKilled}}' ИМЯ
  1. 2. Посмотрите лимиты контейнераВыполните docker inspect --format ... ИМЯ и найдите Memory. Ноль означает отсутствие заданного Docker жёсткого лимита, но остаются пределы хоста или родительских групп.
    Linux · Терминал (Bash)Команда
    Лимит в байтах, только чтение.
    docker inspect --format '{{.HostConfig.Memory}}' ИМЯ
  1. 3. Посмотрите потребление живого контейнераЕсли контейнер работает, запустите docker stats --no-stream ИМЯ. Сравните MEMORY USAGE / LIMIT с ресурсами хоста. Если контейнер остановлен, stats не покажет его прошлое потребление; используйте ранее собранные метрики.
    Linux · Терминал (Bash)Команда
    Один снимок использования ресурсов, без изменения параметров.
    docker stats --no-stream ИМЯ
  1. 4. Проверьте журнал приложения и хостаВыполните docker logs --tail 100 ИМЯ. На Linux-хосте администратор может сверить сообщения ядра об OOM в journalctl -k, но не копируйте журналы с ключами и данными пользователей.
    Linux · Терминал (Bash)Команда
    Вывод может содержать конфиденциальные сведения.
    docker logs --tail 100 ИМЯ
  1. 5. Сравните нагрузку и поведение памятиВ тестовой копии повторите одинаковую нагрузку, сравните пиковую память и частоту сборки мусора. Для Node.js, JVM, Python или БД используйте штатные профилировщики своей среды; не предполагайте, что любой рост RSS означает утечку.
  1. 6. Измените одно ограничение на тестовой копииПри доказанной недостаточности лимита согласуйте допустимый объём RAM. В compose.yaml используйте поддерживаемый вашей версией Compose параметр mem_limit для сервиса либо настройки платформы; затем docker compose config --quiet и пересоздание тестового сервиса.
  1. 7. Проверьте, что запас достаточенПовторите нагрузочный тест и docker stats --no-stream, убедитесь, что OOMKilled остаётся false и приложение отвечает. Если ресурс растёт без стабилизации, не лечите утечку бесконечным увеличением лимита.

#Как проверить результат

Успех: воспроизводимый тест проходит, контейнер не убивается из-за OOM, у хоста остаётся резерв памяти.

#Если проблема осталась

Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.