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/logde 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 detftpdno 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
busyboxe, em seguida, executarbusybox syslogdantes de iniciar o serviçotftpd. Por exemplo, seuCMDpode se parecer com:CMD ["sh", "-c", "busybox syslogd; in.tftpd -Lvvv"]Nesse caso, os registros seriam visíveis em
/var/log/messagesdentro 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 syslogdescreva 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.