当前位置: 首页 > 面试题库 >

如何清除Docker容器日志?

鲁向明
2023-03-14
问题内容

我使用以下命令读取了Docker容器日志输出

docker logs -f <container_name>

我通过调用来将大量数据记录到node.js应用程序的日志中console.log()。我需要清理日志,因为它太长了,并且该docker logs命令首先运行日志的现有行,然后结束。我该如何清洁使其再次变短?我想查看类似的命令:

docker logs clean <container_name>

但是它似乎不存在。


问题答案:

首先,如果只需要查看较少的输出,则可以让docker只向您显示更新的行:

docker logs --since 30s -f <container_name_or_id>

或者,您可以限制一些行:

docker logs --tail 20 -f <container_name_or_id>

要删除Docker for Linux安装上的日志,可以对单个容器运行以下命令:

echo "" > $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)

请注意,这需要root用户,我不建议这样做。如果在Docker中间将文件写入同一文件的日志中使该文件为空,则可能会损坏该日志文件。相反,您应该配置docker旋转日志。

最后,您可以将docker配置为使用/etc/docker/daemon.json文件中的以下内容自动轮换日志:

{
  "log-driver": "json-file",
  "log-opts": {"max-size": "10m", "max-file": "3"}
}

这使Docker每个容器最多可以保留3个日志文件,每个文件限制为10兆(因此,每个容器的日志限制为20到30兆)。您将需要运行systemctl reload docker以应用这些更改。这些更改是任何新创建的容器的默认设置,它们不适用于已创建的容器。您将需要删除并重新创建任何现有容器以应用这些设置。



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

  • 我有很多运行docker容器的测试。每个都有一个卷。 如何知道需要删除的卷名? 例如: 手动停止并删除容器后,卷仍然存在。 我不想删除所有卷,因为其中一些卷仍在使用中。

  • 问题内容: 此问题与我是否应该担心多余的,未运行的Docker容器有关?。 我想知道如何删除旧容器。将让你删除一个,但我有很多了。没有提供选择选项(如全部,或按图像名称)。 也许有一个存储这些容器的目录,可以方便地手动删除它们? 问题答案: 从Docker 1.13.x开始, 您可以使用Docker容器prune: 这将删除所有停止的容器,并且应在所有平台上以相同的方式工作。 还有一个Docker

  • 清除容器 Clean up (--rm) 指在容器运行完之后自动清除 --rm=false: Automatically remove the container when it exits (incompatible with -d) 默认情况下,每个container在退出时,它的文件系统也会保存下来。这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另外一方面,你也可以保