TFTP-hpa não está efetuando login em um contêiner docker

1

Estou rodando o tftpd-hpa no Ubuntu: 16.04 imagem de base. Quando eu executo isso em uma distro completa, ele fica bom, mas dentro de um contêiner docker não há registros. Parece estar tentando logar em / var / log / syslog que está faltando. Alguém tem alguma sugestão de como eu posso obter alguns logs com isso?

O detalhamento é definido como 4, o que fornece uma saída detalhada apropriada na instalação completa do Ubuntu 16.04, mas nada no contêiner.

Obrigado

    
por R Tweed 20.10.2017 / 15:16

1 resposta

2

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 comando docker run ; isso fará com que as mensagens de log de tftpd 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, executar busybox syslogd antes de iniciar o serviço tftpd . Por exemplo, seu CMD 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.

    
por 20.10.2017 / 16:10