Ubuntu

TFTP-hpa 未登錄 docker 容器

  • October 20, 2017

我在 ubuntu:16.04 基礎映像上執行 tftpd-hpa。當我在完整髮行版上執行它時,它的日誌很好,但在 docker 容器內沒有任何日誌。它似乎正在嘗試登錄到失去的 /var/log/syslog 。有人對我如何從中獲取一些日誌有任何建議嗎?

詳細程度設置為 4,這會在完整的 Ubuntu 16.04 安裝中提供合適的詳細輸出,但容器中沒有任何內容。

謝謝

tftpd不會自行寫入日誌文件。相反,它通過 syslog 記錄(它/dev/log在那裡打開並寫入消息,這些消息由某種日誌記錄守護程序收集,然後根據其配置分派到文件中)。

在一個典型的容器內沒有日誌守護程序,所以沒有任何東西在監聽/dev/log,你的日誌消息就消失了。

如果您想tftpd在容器內執行時查看這些日誌,您將需要有一些東西 listen on /dev/log。你有幾個選擇:

  • 您可以通過添加到命令行來將主機安裝/dev/log在容器內;這將使容器中的日誌消息出現在您主機的文件中(最終目的地取決於您的系統日誌配置,但通常類似於)。-v /dev/log:/dev/log``docker run``tftpd``/var/log/...``/var/log/messages
  • 您可以在容器中執行最小的 syslog 服務並將其記錄到文件中。例如,您可以在啟動服務之前安裝busybox然後執行。例如,您可能看起來像:busybox syslogd``tftpd``CMD
CMD ["sh", "-c", "busybox syslogd; in.tftpd -Lvvv"]

在這種情況下,日誌將在容器/var/log/messages 內可見。

  • 您可以將它們重定向到容器的標準輸出,而不是將日誌寫入文件。如果您修改上述命令以busybox syslogd寫入標準輸出,像這樣……
CMD ["sh", "-c", "busybox syslogd -n -O /dev/stdout & in.tftpd -Lvvv"]

…然後您將在容器的控制台上看到日誌,這些日誌也將由 Docker 收集並通過docker logs.

這不是一個詳盡的解決方案列表,但希望它足以為您指明解決方案。

引用自:https://serverfault.com/questions/879453