当前位置: 首页 > 知识库问答 >
问题:

是否可以清除docker容器日志文件-中期运行?

逄征
2023-03-14

我在/var/lib/docker/container下有一个非常大的日志文件/

是否可以在容器仍在运行时将其移除?它是否会创建一个新的,并继续写入其中(首选选项)?


共有1个答案

莫宝
2023-03-14

不:如果您手动删除日志文件,Docker不会重新创建日志文件。
如果日志一致性对您来说并不重要,一个更好的方法是清除日志文件的内容。您可以使用(sudo是必需的,因为docker东西的所有者/组是根用户):

 sudo sh -c "truncate -s 0 /var/lib/docker/container/<container_hash>/...-json.log"

关于你的问题:

即使文件不断被写入,也可以吗?-

至少没有错误。下面是一个简单的Linux示例来检查:

运行一个每0.5秒写入日志的容器:

docker run -d --name while-true  alpine sh -c "while true; do date; sleep 0.5s; done"

显示20个最新日志:

docker logs --tail=10 while-true
Sun Apr 11 17:29:27 UTC 2021
Sun Apr 11 17:29:27 UTC 2021
Sun Apr 11 17:29:28 UTC 2021
Sun Apr 11 17:29:28 UTC 2021
Sun Apr 11 17:29:29 UTC 2021
Sun Apr 11 17:29:29 UTC 2021
Sun Apr 11 17:29:30 UTC 2021
Sun Apr 11 17:29:30 UTC 2021
Sun Apr 11 17:29:31 UTC 2021
Sun Apr 11 17:29:31 UTC 2021

将日志截断为0字节10次:

for i in $(seq 1 10); do truncate -s 0  $(docker inspect -f='{{.LogPath}}' while-true); done

显示20个最新日志:

docker logs --tail=10 while-true
Sun Apr 11 17:29:35 UTC 2021
Sun Apr 11 17:29:35 UTC 2021
Sun Apr 11 17:29:36 UTC 2021
 类似资料:
  • 问题内容: 我使用以下命令读取了Docker容器日志输出 我通过调用来将大量数据记录到node.js应用程序的日志中。我需要清理日志,因为它太长了,并且该命令首先运行日志的现有行,然后结束。我该如何清洁使其再次变短?我想查看类似的命令: 但是它似乎不存在。 问题答案: 首先,如果只需要查看较少的输出,则可以让docker只向您显示更新的行: 或者,您可以限制一些行: 要删除Docker for L

  • 问题内容: 我过去经常查看特定容器的日志。 有清除这些日志的好方法吗? 问题答案: 从这个问题出发,您可以运行一种代码: 或有类似的truncate命令: 我对这两个都不满意,因为它们直接修改Docker的文件。当docker将json格式的数据写入文件时,可能会发生外部日志删除,导致部分行并破坏了从cli 读取任何日志的能力。 相反,您可以让Docker自动为您轮换日志。如果使用默认的JSON日

  • 我会很感激任何关于在哪里搜索这些文件的提示。

  • 我使用log4j2来记录我的程序。在我的xml配置文件中,我有这个附件: 我需要的是一种配置它的方法,这样它就会自动删除所有超过n天的文件。 我已经找到了一些这样的问题,但是它们没有帮助,因为它们没有说如何通过xml配置来完成它。 要使简短地说,我应该在上面的片段中指示像“MaxBackupIndex”这样的参数吗?或者我应该使用哪个其他参数(我可以把它放在哪里)?

  • 问题内容: 我只是从Docker开始,因此能够看到用于创建现有Docker映像的Dockerfile将非常有帮助。 即使图像是通过手动运行命令然后提交给标签来构建的,但出于学习目的和安全目的,能够看到图像的制作方式还是很不错的。 有没有一种方法可以提取Dockerfile或用于构建给定Docker映像的命令列表? 问题答案: 您有很大帮助。如果没有任何步骤涉及stdin,它甚至可以用于生成dock