Вывод из обработчика сигналов в контейнере docker, не распечатанный с вывода docker run-t

#docker #stdout

Вопрос:

Я запускаю программу на python в контейнере docker, используя «docker run-t-rm «. Программа python содержит обработчик сигнала SIGTERM, который выводит некоторые выходные данные (скажем, «SIGTERM получен»). Я вижу обычный вывод stdout из программы python на терминале.

Если я использую другое окно терминала и запущу «docker stop «, я увижу, что контейнер останавливается, но я не увижу вывод «SIGTERM получен» в конце вывода программы python.

Однако, если я выполняю «журналы докеров», я вижу все выходные данные из своего контейнера, включая «полученный SIGTERM» (поэтому я знаю, что вызывается обработчик SIGTERM).

Я пробовал различные способы очистки выходных данных внутри обработчика SIGTERM, но все безрезультатно. Я начинаю подозревать, что каким-то образом контейнер отключает канал для запуска docker перед вызовом обработчика SIGTERM, что кажется…агрессивным.

Есть ли способ убедиться, что все, что попадает в «журналы докеров», также попадает в stdout «запуск докера», даже в условиях выключения?

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.