Я запускаю tftpd-hpa на базовом образе ubuntu: 16.04. Когда я запускаю это в полном дистрибутиве, он отлично регистрируется, но внутри контейнера докеров нет никаких журналов. Кажется, что пытается войти в / var / log / syslog, который отсутствует. Есть ли у кого-нибудь предложения о том, как я могу получить от этого журналы?
Уровень детализации установлен на 4, что дает подходящий подробный вывод при полной установке Ubuntu 16.04, но ничего в контейнере.
Спасибо
tftpd
не записывает в файлы журнала самостоятельно. Скорее, он регистрируется через системный журнал (открывает /dev/log
и записывает туда сообщения, которые собираются каким-то демоном ведения журнала и затем отправляются в файлы в зависимости от его конфигурации).
Внутри типичного контейнера нет демона регистрации, поэтому ничего не слушает /dev/log
и ваши сообщения журнала просто исчезнут.
Если вы хотите видеть эти журналы при запуске tftpd
внутри контейнера вам нужно будет что-то слушать /dev/log
. У вас есть несколько вариантов:
Вы можете установить свой хост /dev/log
внутри контейнера, добавив -v /dev/log:/dev/log
на ваш docker run
командная строка; это сделает сообщения журнала из tftpd
в контейнере появляются в вашем хосте /var/log/...
файлы (конечный пункт назначения зависит от конфигурации системного журнала, но обычно что-то вроде /var/log/messages
).
Вы можете запустить минимальную службу системного журнала в контейнере, и она будет записываться в файл. Например, вы можете установить busybox
а затем запустить busybox syslogd
прежде чем вы начнете tftpd
служба. Например, ваш CMD
может выглядеть так:
CMD ["sh", "-c", "busybox syslogd; in.tftpd -Lvvv"]
В этом случае журналы будут видны в /var/log/messages
внутри контейнер.
Вместо записи журналов в файл вы можете перенаправить их на стандартный вывод контейнера. Если вы измените указанную выше команду, чтобы busybox syslogd
напишите в stdout, вот так ...
CMD ["sh", "-c", "busybox syslogd -n -O /dev/stdout & in.tftpd -Lvvv"]
... тогда вы увидите журналы на консоли вашего контейнера, где они также будут собираться Docker и доступны через docker logs
.
Это не исчерпывающий список решений, но, надеюсь, его достаточно, чтобы указать вам на решение.