Перенаправление вывода процесса не pid 1 в журналы докера

Как перенаправить логи процесса не pid 1 в dockerlogs с конечной целью перенаправить их в gelf?

Внутри Docker- контейнера есть 2 процесса:

1) процесс pid 1

2) не PID 1 процесс, который пишет в файл журнала по пути

Следующие документы докера и конкретно

Официальное изображение nginx создает символическую ссылку из / dev / stdout на /var/log/nginx/access.log и создает другую символическую ссылку из / dev / stderr на /var/log/nginx/error.log, перезаписывая журнал файлы и вызывая отправку журналов на соответствующее специальное устройство.

не помогло Только журналы процесса pid 1 перенаправляются в dockerlogs

Выполненные шаги:

1ln -sf /dev/stdout _path_ в Dockerfile

2 Запуск обновленного изображения в качестве контейнера.

3 docker logs -f _containerid_ показывает только логи процесса pid 1

Есть еще один официальный источник докеров

Какие состояния

Docker поддерживает различные драйверы журналирования, используемые для хранения и / или потоковой передачи журналов stdout и stderr контейнера основного процесса контейнера (pid 1)

Так что, возможно, это причина того, что вы не видите логи не- pid- процесса.

Хотя до сих пор не понимаю, почему созданная символическая ссылка с помощью ln -sf / dev / stdout /var/log/mysql/error.log не работает.

1 ответ

У меня такой же вопрос по теме. Как я это решаю, вам нужно запустить "ln -s", когда Docker работает НЕ во время сборки Docker (Dockerfile).

Вот мой сценарий оболочки Bash

tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &

Надежда помогает

Другие вопросы по тегам