Linux Labs

Контейнеры: Docker и compose / Ступень 10 из 11

Лимиты, OOMKilled и пользователь в контейнере

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 1 из 9 · на машине · 4 мин

Отчёт оборвался

Чему научишься

  • Узнавать нехватку памяти по коду 137, OOMKilled и журналу ядра и задавать лимит --memory.
  • Читать потребление контейнеров в docker stats и ограничивать процессор ключом --cpus.
  • Запускать процесс контейнера от нужного пользователя через --user UID:GID.

Каждую ночь контейнер report собирает сводку продаж из ~/report-lab/sales.csv. Сегодня утром сводки нет, а в почте — ни одного письма об ошибке. Посмотри, чем закончился контейнер.

Упражнение · посмотреть

Посмотри, чем кончился отчёт

В ~/report-lab лежит ночной отчёт: контейнер report собирает сводку из sales.csv. Посмотри список контейнеров, журнал report и два поля из docker inspect.

Сначала предположи

Сборка отчёта не дошла до конца. Что docker logs report покажет после строки о сборке?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Проверь себя 1 вопрос

Сборка оборвалась без сообщения об ошибке, контейнер вышел с кодом 137, OOMKilled — true. Что остановило сборку?

  • В build.sh нет exit, и ошибки он не напечатал. Код 137 получает процесс, убитый снаружи сигналом SIGKILL.

  • Срока жизни у контейнера нет: остановить его можно командой docker stop, и тогда OOMKilled остаётся false.

Сборку убило ядро: ей не хватило памяти, выделенной контейнеру.

Ubuntu 24.04
Загрузка…