bounty还有3天到期。回答此问题可获得+250声望奖励。D-Nice希望引起更多关注此问题。
我有一个Rails项目,我在生产环境中使用docker-compose运行。有很多日志,它们在几天内就填满了我的docker容器的所有空间。运行du --block-size=1M -a /var/lib/docker/
,它显示了这些大的,不断增长的日志文件:10543 /var/lib/docker/overlay2/cd749947f8cda9fa2b2cd14c0f1a2af88da66c43b2d4424e13c787d27dd0e41c/merged/dockerapp/log/production.log 10543 /var/lib/docker/overlay2/cd749947f8cda9fa2b2cd14c0f1a2af88da66c43b2d4424e13c787d27dd0e41c/diff/dockerapp/log/production.log
按照docker-compose v3文件的说明,我尝试使用以下命令限制文件大小和旋转:logging: driver: "local" options: max-size: "15m" max-file: "3"
但是即使在docker-compose文件中(我也试过json驱动程序),日志继续增长,直到它们占用了我的docker容器的所有可用空间。我该如何解决这个问题?
1条答案
按热度按时间xuo3flqw1#
Docker日志选项会影响容器的标准输出和错误流,这些输出和错误流存储在容器附近的文件中,但不在其文件系统中。您可以使用
docker logs CONTAINER
命令查看此日志。您的
production.log
看起来像一个普通文件,因此它不会自动旋转,除非您将其实现为应用程序/容器的一部分。最好是将日志指向容器内主进程的输出或错误流,假设不使用host的PID命名空间,可以尝试登录其中一个:
无论PID名称空间如何,这些都可以安全地尝试:
如果您能够使用
docker logs
命令查看日志,您将知道它是否有效。此外,有些流(例如nginx)更喜欢创建符号链接,而不是直接使用其中一个流。如果容器中有启动脚本,可以尝试添加以下内容: