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

Docker 容器日志占用了我所有的磁盘空间

谭敏学
2023-03-14

我正在 VM 上运行容器。默认情况下,我的容器将日志写入 /var/lib/泊坞窗/容器/CONTAINER_ID/CONTAINER_ID-json.log 文件,直到磁盘已满。

目前,我必须手动删除这个文件,以避免磁盘已满。我听说Docker 1.8中会有一个参数来旋转日志。您建议当前的解决方法是什么?

共有3个答案

梁丘俊人
2023-03-14

【这个回答涵盖了docker的当前版本,供那些在被提问很久之后才遇到这个问题的人参考。]

要为所有新创建的容器设置默认日志限制,可以在/etc/docker/daemon.json中添加以下内容:

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

如果您使用的是systemd,则使用< code > system CTL reload docker 重新加载docker(否则使用适当的重新启动命令进行安装)。

您还可以使用类似的文件切换到本地日志记录驱动程序:

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

本地日志驱动程序将日志内容存储为内部格式(我相信是原型),因此您将在相同大小的日志文件中获得更多日志内容(或者为相同的日志占用更少的文件空间)。本地驱动程序的缺点是外部工具,如日志转发器,可能无法解析原始日志。请注意,docker logs仅在日志驱动程序设置为json-file本地日志时才有效。

最大大小是对 docker 日志文件的限制,因此它包括 json 或本地日志格式化开销。最大文件是泊坞站将维护的日志文件数。在一个文件上达到大小限制后,将轮换日志,并在超过最大文件时删除最旧的日志。

有关更多详细信息,docker有关于所有驱动程序的文档:https://docs.docker.com/config/containers/logging/configure/

我也有一个关于这个主题的演讲。使用< code>P查看演讲者注释:https://sudo-b mitch . github . io/presentations/DC 2019/tips-and-tricks-of-the-captains . html # logs

段哲圣
2023-03-14

注意:这仅适用于docker-com的版本2

例子:

version: '2'
services:
  db:
    container_name: db
    image: mysql:5.7
    ports:
      - 3306:3306
    logging:
      options:
        max-size: 50m
武向文
2023-03-14

Docker 1.8 已发布日志轮换选项。添加:

--log-opt max-size=50m 

当容器启动时,可以解决问题。您可以在以下位置了解更多信息: https://docs.docker.com/engine/admin/logging/overview/

 类似资料:
  • 问题内容: 我在VM上运行容器。我的容器默认将日志写入/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID- json.log文件,直到磁盘已满。 当前,我必须手动删除此文件,以避免磁盘已满。我读到在Docker 1.8中会有一个参数来旋转日志。您会建议什么作为当前解决方法? 问题答案: Docker 1.8已发布,带有日志轮换选项。新增: 当容

  • 如果docker文件中有RUN命令,那么它会创建一些中间图像。我的问题是,这些中间图像是否占用硬盘的内存?如果是,docker build--rm应该足够了吗?

  • 问题内容: 我已经设置了泊坞窗,并且使用了完全不同的块设备来存储泊坞窗的系统数据: 请注意, 使用的是完全不同的硬盘 问题是,当我继续下载docker映像并运行docker容器时,似乎另一个硬盘驱动器 也用完了。 我可以通过删除一些Docker映像来验证此问题。在我删除了一些docker映像之后, 现在有了一些额外的空间。 我想念什么吗? 我的泊坞窗版本: 问题答案: 这是devicemapper

  • 本文向大家介绍解决PostgreSQL日志信息占用磁盘过大的问题,包括了解决PostgreSQL日志信息占用磁盘过大的问题的使用技巧和注意事项,需要的朋友参考一下 当PostgreSQL启用日志时,若postgresql.conf日志的相关参数还使用默认值的话磁盘很容易被撑爆.因此在启用了logging_collector参数时,需要对其它相关的参数进行调整. 系统默认参数如下 调整后的参数 重点

  • 我有一个docker正在运行,它会给我磁盘空间警告。如何增加docker空间并重新开始?(同一容器) 假设我想给15gb。

  • 我正在docker容器中运行Apache2,不想向磁盘写入任何内容,只想向stdout和stderr写入日志。我见过几种不同的方法(Supervisord和stdout/stderr,Apache访问stdout日志),但这些方法看起来像是黑客。难道就没有办法默认这样做吗? 需要说明的是,我不想对日志进行跟踪,因为这将导致将内容写入容器中的磁盘。 签入Docker Hub(https://Hub.