Як відключити скидання основних файлів у контейнер докера


13

Мій контейнер PHP запускає лялечку для створення PDF. Створюючи документ PDF, він також створює два основних дамп-файли всередині мого контейнера. Я не впевнений, звідки вони насправді беруться.

Хост / сервер - CentOS 7.

Я перевірив наступне:

  1. Немає журналу помилок програми, Browserhot / marpeteer працює без помилок.
  2. Не знайдено журналу помилок (наприклад, segfault) /var/log/messages

Я намагався відключити основні скиди

Дотримуючись розділу «Відключити основні звалища» https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/ , я зробив:

  1. Додавання наступного вмісту до /etc/security/limits.conf
* soft core 0
* hard core 0
  1. Створив invalid-core-dumps.sh автор: echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh

  2. Додано наступний вміст до /etc/systemd/coredump.conf

[Coredump]

Storage=none
ProcessSizeMax=0
  1. І перезавантажте сервер і контейнер .

  2. Я також намагався встановити ulimit -c 0всередині контейнера (альпійський)

Жоден із наведених вище трюків не працює для мене. Кожен раз, коли ляльковик створює PDF, він завжди створює два основних дамп-файли, як показано нижче:

core.131 core.52

Основні файли виглядають так:

Вміст основного дамп-файлу

Хто-небудь може мені допомогти відключити основні звалища? Дуже дякую.


Я думаю, вам потрібно відключити основний дамп на своєму хості, а не контейнер або запустити контейнер як попередньо
LinPy

@LinPy Я відключив основний дамп на хості вже, дотримуючись linux-audit.com/… . Спробували відключити основні відвали як на хості, так і на контейнері. Жоден з них не працює.
Джонатан

Якщо ви хочете знайти першопричину цих коренів, а не відключати їх, то я б запропонував вам більше заглянути в ляльковика. Оскільки ляльковик використовує nodejs, а в coredump в ньому є модулі / libs nodejs, схоже, що подібний процес nodejs, який мав помилку. Існує декілька варіантів налагодження, які можна використовувати, як відключення безголового режиму ляльковиків, що дозволяють докладно вести журнал. Ось посилання для отримання додаткової інформації: github.com/puppeteer/puppeteer#debugging-tips .
ахасбіні

спробуйте відредагувати /etc/security/limits.conf /etc/systemd/coredump.conf контейнер insitde, наприклад, у файлі Docker, який описує, як створити зображення
Рябченко Олександр

@ahasbini дивна річ - це те, що PDF-файли генеруються ідеально. Я включив налагодження, але не зміг знайти нічого корисного. Просто основні звалища.
Джонатан

Відповіді:


3

Потрібно запустити контейнер із можливістю --ulimit core=0вимкнути coredumps.

Довідка: https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit

Приклад

На хості тимчасово встановіть шлях для coredump /tmpдля перевірки:

echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

Запустіть контейнер, як зазвичай, і примусьте скинути основний дамп:

docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)

Тепер із --ulimit core=0:

docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)

Дякую за відповідь. Я використовую композицію і спробував конфігурацію ulimit, встановивши м'який і жорсткий значення 0. Але все ще не працює. Чи запуск докера —ulimit core = 0 такий же, як встановлення обмеження compose на 0?
Джонатан

Я вважаю, що його слід додати до тієї entrypoint.shж команди, яка запускає програму php
ahasbini

2

У мене є ця проблема і в службі рій докера, і --ulimit core = 0 не працює в службі рій, я використовував команду нижче і працював для мене в службі рій докер!

sysctl -w kernel.core_pattern = / dev / null


Дякую! Це теж робить трюк.
Джонатан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.