Стандартный вывод контейнера Docker не отображается в журналах Docker

#linux #docker #logging #stdout #docker-logs

#linux #docker #ведение журнала #стандартный вывод #docker-logs

Вопрос:

Я пытаюсь настроить свои ошибки php для вывода в журналы docker. Вся документация, которую я прочитал, указывает, что журналы docker привязаны к контейнерам stdout и stderr, которые поступают из /proc/self/fd/1 и /proc/self/fd/2 . Я создал символическую ссылку из моего файла журнала ошибок php /var/log/php_errors.log в /proc/self/fd/1 с помощью команды:

 ln -sf /proc/self/fd/1 /var/log/php_errors.log
 

После связывания журнала ошибок я протестировал его функциональность, запустив этот php-скрипт:

 <?php
 error_log("This is a custom error message constructed to test the php error logging functionality of this site.n"); 
?>
 

Вывод отображает сообщение об ошибке на консоль, поэтому я вижу, что регистрация ошибок php теперь перенаправляется на стандартный вывод в контейнере, но при запуске docker logs -f <containername> я никогда не вижу сообщения об ошибке в журналах. Также эхо-сигнал изнутри контейнера также не отображается в журналах, что сбивает с толку, потому что, насколько я понимаю, команда echo — это стандартный вывод.

Дальнейшее чтение сообщило мне, что в журналах docker будут отображаться только выходные данные из pid 1, что может быть проблемой. Если это так, как я могу правильно настроить ведение журнала ошибок php для отображения в журналах docker вне контейнера.

Также я проверил, что использую драйвер docker json-файла по умолчанию, и попробовал это как в своей локальной среде, так и на веб-сервере.