NGINX Docker 容器变得太大

NGINX Docker container growing too big

很难弄清楚这一点。我有一个 docker 容器,它的大小一直在增长。

运行 sudo du -h / | grep '[0-9\.]\+G' 显示容器 e917b9b06 占用了将近 60G 的 space.

如果我这样做 docker ps 看起来那个容器就是我的 nginx 容器。

我以为可能是日志,但所有 nginx 日志都是到 stdout 的符号链接。 tmp 目录中没有任何内容。

有什么奇特的工具可以弄清楚这里发生了什么?容器内的 ncdu 没有显示任何有价值的东西。

我怀疑确实是日志。

虽然您认为 nginx 日志流式传输到 stdout 是正确的,但这意味着 docker 将日志直接存储为容器日志。 您有多个选项(选择任何一个,但只能选择一个):

  1. 只是 delete/recreate 个容器。它将创建一个新的。只要您已将持久数据放入正确的卷中,您就安全了。

  2. 转到/var/lib/docker/containers/<id>。您会在那里找到标准输出日志,通常格式为:<id>-json.log,具体取决于您的 docker 版本。只需检查大文件在哪里。用tail <filename>确认内容。如果这是日志,请删除或 t运行 对其进行分类:truncate -s 0 <filename> 或简单地 : > <filename> 如果您想使用重定向。

既然我们解决了这个问题,我们应该努力防止它再次发生。

我看到您已经 运行安装这些容器 3 年了。恭喜。基于容器的方法意味着,如果您只是删除或创建新容器,由编排器执行,这应该是微不足道的。

如果您打算 运行 长期使用它,我建议您阅读 docker 日志轮换。默认的 json 日志驱动程序默认没有轮换,因此您应该在 docker 运行 命令或 docker 撰写中指定限制。这是相关的documentation about json log driver。或者您可以使用其他日志驱动程序,例如 syslog。