LINUX.ORG.RU
ФорумAdmin

Вопросик#2

 , ,


0

2

Почему docker перезагружает контейнер? В логах самого контейнера «thread is interrupted». Как я понимаю (подсказал ИИ от гугла) это процессу запущенному в докере присылается сигнал (SIGTERM, SIGINT). Но вот так и не понял отчего может такое случиться. Перезапускается внезапно, бывает через 3 часа или 6... Лимитов никаких не ставил. Что может быть?

В логах самого докера

journalctl -xu docker.service --no-pager | grep "34:32"

Jun 13 12:34:32 dockerd[877179]: time="2025-06-13T12:34:32.777749732+03:00" level=info msg="ignoring event" container=220983e9f5563eccd3635f02d53bcb18a5c2ff37f2d98171a5b0faae9e5403c6 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"


В логах контейрера
[2025-06-13 09:34:32.282][ERROR][1][3a2c8709][0] serve error code=1070(ST thread is interrupted)
...ещё строк 5 всякой лабуды (закрытие ресурсов и т.д., не ошибок)....
...дальше стартует снова сервис в докере...


Такого никогда не было, обычно годами висят запущенные контейнеры, а тут

★★★★

Перезапускается внезапно, бывает через 3 часа или 6…

Ну где там все клоуны которые рассказывали что доп слой абстракции в проде это правильно, удобно, и нет никаких проблем. Идите, помогайте человеку, счастливой отладки.

Obezyan
()

[2025-06-13 09:34:32.282][ERROR][1][3a2c8709][0] serve error code=1070(ST thread is interrupted)

Это может значит абсолютно всё что угодно, от получения сигнала до штатной команды или изменения в данных, что это значит знают только авторы этого приложения.

Если документации или исходного кода нет то можно попробовать подключить strace к процессу в контейнере, по идеи там будет видно какой сигнал и когда к нему приходит.

anonymous
()

Что там у тебя внутри докера происходит, я не знаю, поэтому не подскажу, но в догонку предыдущему вопросику…

journalctl -xu docker.service –no-pager | grep «34:32»

Если в пайп перенаправлять, то --no-pager можно не писать.

CrX ★★★★★
()
Ответ на: комментарий от anonymous

знают только авторы этого приложения.

Откуда приложению знать откуда поступил сигнал? Оно способно только его корректно обработать: завершить соединения, очистить ресурсы и т д). Это так ИИ сказал из гугла

gobot ★★★★
() автор топика
Ответ на: комментарий от anonymous

Но эти сигналы могут прийти как и в самом докере так и на хост машине. Они могут быть посланы узером непосредственно через консоль или приложением-демоном. Мне это нужно узнать, кто послал сигнал и по какой причине. В логах только есть какое то невнятное уведомление TaskDelete и все...

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

А в чем там ошибка?

Откуда я знаю, в чём там ошибка? Ты же даже не сказал, что там у тебя крутится. Приложение внутри контейнера написало, что оно перестало работать и сказало, что это error, вот с ним и надо разбираться в первую очередь.

Interrupt это прерывание треда ЖЕ

И что? Его мог послать другой тред того же приложения, оно могло возникнуть из-за ошибок IO, из-за того, что что-то прочитать не смогло или что-то не смогло найти, или ресурсов не хватило, или вообще из-за чего угодно. У меня libastral сломался, не могу посмотреть внутрь твоего контейнера и изучить работу неизвестного софта.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Не я хочу хотя бы понять докер это перезагружает сам или приложение... А то начну копать не там пройдет куча времени зря. ну и в самом контейнере вообще нет логов системных , даже journalctl нет и /var/log/syslog тоже. Дебажить что ли эээ

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Ты это сможешь понять только тогда, когда поймёшь, почему упало приложение внутри.

ну и в самом контейнере вообще нет логов системных

Включать логи и дебаг в самом приложении.

shell-script ★★★★★
()
Ответ на: комментарий от gobot

Не я хочу хотя бы понять докер это перезагружает сам или приложение

Это же очень просто. Выключи автоматический рестарт контейнера в докере. Тогда, когда в следующий раз приложение упадет, останется винить только само приложение.

bigbit ★★★★★
()
Ответ на: комментарий от shell-script

В приложении по максималке включено логирование, но там только

thread is interrupted и ещё «Resource temporarily unavailable». Заметил что падает под нагрузкой чаще.

И ещё на хост машине в логах ядра segfault этого докеровского приложения появляются записи. Но что с этим делать не понять.

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Interrupt, вообще-то, это прерывание, оно же – исключение, то есть, ошибка, а может, и не ошибка вовсе, которая может обрабатываться программным кодом, а авария – это crash :)

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от gobot

И ещё на хост машине в логах ядра segfault этого докеровского приложения появляются записи. Но что с этим делать не понять.

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

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Посмотрел apparmor_status, там это приложение, которые падает есть в «4 processes are in enforce mode.», указан полный путь к нему и помечен «docker-default». Но в логах что-то ничего, кроме

audit: type=1400 audit(1750072602.362:140): apparmor="DENIED" operation="capable" class="cap" profile="ubuntu_pro_apt_news" pid=1569502 comm="python3" capability=24  capname="sys_resource"

gobot ★★★★
() автор топика