Ubuntu
TFTP-hpa 未登錄 docker 容器
我在 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
.這不是一個詳盡的解決方案列表,但希望它足以為您指明解決方案。