长时间运行的 Docker 容器会迅速积累大量的日志行。在访问和过滤数据时,这些会消耗存储容量并降低性能。虽然 Docker 包含用于查看日志的集成工具,但没有用于清理它们的内置机制。
在本文中,您将学习如何清除正在运行的 Docker 容器的日志,而无需重新启动或替换它们。您还将看到一些在保留旧数据的同时更有效地处理大型日志的技术。
理解问题
Docker 从容器前台进程的标准输出和错误流中收集日志。该docker logs命令用于检索这些日志,但它不允许您删除旧行。
Docker 支持许多不同的日志记录驱动程序,因此不可能提供标准化的清理机制。本文重点介绍标准json-file日志记录驱动程序,其中日志行存储在容器主机文件系统上的 JSON 文件中。如果您需要清理流式传输到远程主机的日志,请参阅存储驱动程序的文档。
json-file驱动程序创建的日志文件存储在该/var/lib/docker/containers目录下。每个容器都有自己的日志文件,该文件会在其整个生命周期中使用。默认情况下没有配置日志轮换。
简单地删除日志文件并不是一个有效的解决方案。Docker 期望该文件持续可用,并且如果它被删除不会自动重新创建它。清除现有日志的内容以避免影响任何当前写入会更安全。
发现日志文件的路径
首先找到目标容器日志文件的路径。my-app您可以通过运行以下命令来检索调用的容器的日志文件路径:
$ docker inspect --forma