tftpd
não grava arquivos de log por conta própria. Em vez disso, ele registra via syslog (ele abre /dev/log
e grava messsages lá, que são coletados por algum tipo de daemon de registro e, em seguida, enviados para arquivos com base em sua configuração).
Dentro de um contêiner típico não há um daemon de registro, então nada está escutando em /dev/log
e suas mensagens de registro simplesmente desaparecem.
Se você quiser ver esses registros quando estiver executando tftpd
dentro de um contêiner, precisará ter algo para ouvir em /dev/log
. Você tem várias opções:
-
Você pode montar o
/dev/log
de seu host dentro do contêiner adicionando-v /dev/log:/dev/log
à sua linha de comandodocker run
; isso fará com que as mensagens de log detftpd
no contêiner apareçam nos arquivos/var/log/...
do seu host (o destino final depende da configuração do seu syslog, mas geralmente é algo como/var/log/messages
). -
Você pode executar um serviço de syslog mínimo no contêiner e registrá-lo em um arquivo. Por exemplo, você pode instalar
busybox
e, em seguida, executarbusybox syslogd
antes de iniciar o serviçotftpd
. Por exemplo, seuCMD
pode se parecer com:CMD ["sh", "-c", "busybox syslogd; in.tftpd -Lvvv"]
Nesse caso, os registros seriam visíveis em
/var/log/messages
dentro do contêiner. -
Em vez de gravar registros em um arquivo, você pode redirecioná-los para o stdout do contêiner. Se você modificar o comando acima para ter
busybox syslogd
escreva para stdout, como este ...CMD ["sh", "-c", "busybox syslogd -n -O /dev/stdout & in.tftpd -Lvvv"]
... então você verá os logs no console do seu contêiner, onde eles também serão coletados pelo Docker e disponibilizados via
docker logs
.
Esta não é uma lista exaustiva de soluções, mas esperamos que seja o suficiente para indicar uma solução.