tftpd不会自行写入日志文件。相反,它通过 syslog 进行记录(它/dev/log在那里打开并写入消息,这些消息由某种日志守护程序收集,然后根据其配置分派到文件)。
在典型的容器内没有日志守护进程,因此没有任何东西正在侦听/dev/log,并且您的日志消息会消失。
如果您想tftpd在容器内运行时查看这些日志,则需要监听一些东西/dev/log。您有多种选择:
您可以通过添加到命令行来将主机安装/dev/log在容器内;这将使容器中的日志消息出现在主机的文件中(最终目的地取决于您的系统日志配置,但通常类似于)。-v /dev/log:/dev/logdocker runtftpd/var/log/.../var/log/messages
您可以在容器中运行最小的系统日志服务并将其记录到文件中。例如,您可以在启动服务之前安装busybox并运行。例如,你的可能看起来像:busybox syslogdtftpdCMD
CMD ["sh", "-c", "busybox syslogd; in.tftpd -Lvvv"]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,日志将在容器/var/log/messages 内部可见。
您可以将日志重定向到容器的标准输出,而不是将日志写入文件。如果您修改上面的命令以busybox syslogd写入标准输出,就像这样......
CMD ["sh", "-c", "busybox syslogd -n -O /dev/stdout & in.tftpd -Lvvv"]
Run Code Online (Sandbox Code Playgroud)
...然后您将在容器的控制台上看到日志,它们也将由 Docker 收集并通过docker logs.
这不是详尽的解决方案列表,但希望它足以为您指明解决方案。
| 归档时间: |
|
| 查看次数: |
3784 次 |
| 最近记录: |