2016-05-28 98 views
0

假設我的應用程序在文件夾/ app/logs /中生成日誌。爲了方便,會生成多個日誌文件(基於不同的運行時上下文),以便更好地進行監視。如果我使用Docker容器化我的應用程序,如何訪問我在日誌文件夾中運行時生成的日誌?訪問正在運行的碼頭集裝箱的日誌文件夾

我的應用程序沒有記錄的nohup的類型和肯定

docker logs -f <container-id> 

似乎並沒有工作。

回答

2

docker logs只會顯示您正在運行的進程的stderr和stdout。

集裝箱可以很好地與集中式日誌記錄系統配合使用,因爲它適用於他們的短暫/可擴展設計。使用syslog,loggly,graylog,logstash,fluentd等至push your docker logs over the network to a server。在一個位置訪問所有應用程序和上下文日誌。

如果這似乎是太多...

您可以直接從主機訪問日誌

docker exec <container-id> cat /apps/logs/context.log 

您可以登錄到一個共享的數據量

docker volume create logs 
docker run -v logs:/apps/logs <image> 

你可以登錄到主機目錄

docker run -v /apps/logs:/apps/logs <image> 
+0

感謝您的信息。每種方法都非常貼切和自我解釋。 – t6nand

+0

我現在有幾個問題。日誌記錄到共享數據卷或直接在主機目錄中涉及docker exec命令。因爲在那種情況下,存在內存泄漏的可能性。在過去它導致我的機器處於完全鎖定/凍結狀態並需要手動重啓機器。 – t6nand

+0

日誌記錄本身將由你運行的進程完成,exec不應該參與日誌記錄。您可以在不使用'exec'的情況下訪問共享卷和主機卷。如果需要,有一些方法可以訪問容器中沒有'exec'的容器中的數據,例如'cp'。 – Matt