彻底解决 Docker 日志膨胀

云计算 云原生
我发现一台服务器的磁盘空间即将耗尽。经过排查,发现某个 Docker 容器在一年内生成了14 GB 的日志文件。为避免类似问题,本文将指导你如何快速检查、清理 Docker 日志,并设置日志大小限制以防止未来日志失控。

最近,我发现一台服务器的磁盘空间即将耗尽。经过排查,发现某个 Docker 容器在一年内生成了14 GB 的日志文件。为避免类似问题,本文将指导你如何快速检查、清理 Docker 日志,并设置日志大小限制以防止未来日志失控。

  • 重启容器(如服务器重启或手动执行 systemctl restart docker)不会清除日志,日志文件会持续累积。
  • 重建容器(删除并重新创建容器)才会重置日志。

检查 Docker 日志大小

默认日志路径:

/var/lib/docker/containers/<容器ID>/<容器ID>-json.log

使用以下命令按大小排序查看所有日志文件:

find /var/lib/docker/containers/ -name "*-json.log" | xargs du -h | sort -hr

示例输出:

5.9G /var/lib/docker/containers/d2e92.../d2e92...-json.log
4.9G /var/lib/docker/containers/ec7a4.../ec7a4...-json.log

根据容器 ID 查找容器名称

使用docker inspect命令:

docker inspect --format='{{.Name}}' <容器ID>

示例输出:

/php-fpm-valente

(注意:输出结果会以斜杠开头,实际容器名为php-fpm-valente)

清理 Docker 日志

  • 清理单个日志文件:
truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
  • 清理所有日志文件(谨慎使用):
truncate -s 0 /var/lib/docker/containers/*/*-json.log

设置日志大小限制

  • 编辑 Docker 守护进程配置文件/etc/docker/daemon.json(若不存在则新建):
sudo nano /etc/docker/daemon.json
  • 添加以下内容(限制单个日志文件为 10MB,保留最多 3 个归档文件):
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}
  • 重启 Docker 服务以生效:
sudo systemctl restart docker
  • 注意:此配置仅对新创建的容器生效。若需应用到现有容器,需删除并重建它们。

验证配置

使用以下命令检查容器的日志配置:

docker inspect <容器名称> | grep -A 4 LogConfig

示例输出:

"LogConfig": {
    "Type": "json-file",
    "Config": {
        "max-file": "3",
        "max-size": "10m"
    }
}

总结

  • 定期检查日志大小,避免磁盘空间耗尽。
  • 通过daemon.json配置日志轮转,限制日志文件大小。
  • 清理日志时优先使用truncate,避免直接删除文件导致容器异常。

遵循以上实践,可有效管理 Docker 日志,提升服务器资源利用率和稳定性。更多配置细节请参考Docker 官方文档[1]。

参考资料

[1]Docker 官方文档:https://docs.docker.com/config/containers/logging/configure/

责任编辑:武晓燕 来源: 程序猿技术充电站
相关推荐

2009-11-27 10:31:02

GPRS路由

2022-10-08 23:55:58

iOS苹果开发

2021-12-03 12:15:01

QT中文乱码Windows

2021-03-13 21:00:30

电脑PC电脑弹窗广告

2021-05-18 09:06:19

零信任邮件安全安全威胁

2021-02-18 08:22:26

KubernetesDocker镜像

2009-12-21 14:12:30

路由器配置故障

2018-09-18 11:28:01

2023-02-27 08:08:54

Pulsar源码重复消费

2010-01-04 15:05:53

2009-12-14 18:18:10

路由器转发故障

2010-08-26 09:06:44

路由器转发故障

2023-11-28 08:36:16

Spring中Body读取

2009-02-11 09:35:00

DHCP服务器故障

2010-01-11 18:05:24

VB.NET窗体继承

2010-01-12 16:33:08

交换机故障

2009-12-03 16:33:02

路由交换设备

2009-12-22 14:59:23

2010-01-14 10:19:05

2009-11-26 14:03:35

无线路由器
点赞
收藏

51CTO技术栈公众号