docker的日志清理

image.png

前言
docker启动容器必须有前台输出,为防止这些日志积累,我们需要清理或限制日志文件大小。本文提供了如下几个方案:
1)清空日志文件(临时解决方案)
2)单个容器限制日志大小
3)docker全局限制日志大小

1. 容器前台日志位置

日志位置:/var/lib/docker/containers/container_name/xxxx-json.log

查看如下:

[root@pre-server01 containers]# pwd
/var/lib/docker/containers
[root@pre-server01 containers]# du -sh *
14M     22d13bdf346647db3f60e46202b508353baf4e28c9dc7ce3c1ea22e9dd7700d7
7.3M    35f793ce044beb3b07dfcba6eb0e968ad81e152fb2a34df1d747e54c2b9c47d6
44K     552fed82b5b45f63f2c62ffb2c1ab9d4308132b4a112913eedb86d869f326792
117M    5a7e328bae074a7841583448e6259963ef6e2076bd34011b10a89fda603b3ec3
648K    6bf1cc99809501fe6c5133bbadd1a973b938425fd87a5ff98e3f4ab7d570589a
48K     9b5a05ff7f7654f22972da9de8f68df7bb0f912676e7a2986192ab10a98ac801
256K    a64b3205e15594a36eef57a157900ab5379f5b94b97fb27001df50e38adf0c5d
907M    c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a
44K     def16294aad14cf44ff0b9b6a137e7b4535ba79ef7171904c6a086d325bfac6a
40K     fd8a0279ff17e10b218404156c482e34a967f8681a27d0bf2e9bcfb1ff5304c2
[root@pre-server01 containers]# cd c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a
[root@pre-server01 c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a]# du -sh *
907M    c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a-json.log
4.0K    checkpoints
8.0K    config.v2.json
4.0K    hostconfig.json
4.0K    hostname
4.0K    hosts
4.0K    mounts
4.0K    resolv.conf
4.0K    resolv.conf.hash

2. 临时解决

  • 执行命令
echo "" > c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a-json.log

说明:
echo一个空进去,不需要重启容器。
但如果你直接删除这个日志,容器并不会释放空间,需要重启容器。
这是一个临时解决方案,当然你也可以写定时任务清理,但这就不如限制容器日志大小友好了——根本解决方案见后边 3 、4 部分。

  • 效果演示
[root@pre-server01 c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G   11G   28G  28% /
[root@pre-server01 c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a]# echo "" > c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a-json.log
[root@pre-server01 c8c49aac99d86a501b8e2822d6db45d45cecc8781b6b0178a655c24f0ddc6d5a]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G  9.5G   29G  26% /

3. 单个容器

为单个容器设置容器日志大小

我这里使用的是docker-compose做编排和生命周期管理工具,docker-compose.yaml文件修改如下:

......
    restart: always
    # 添加以下部分
    logging:
        driver: "json-file"
        options:
          max-size: "5g"
......

注意:
需要down 然后再 up,restart是不会重读到这个配置的

4. docker 统一设置

/etc/docker/daemon.json 中添加如下内容

{
  "log-driver":"json-file",
  "log-opts": {"max-size":"5g", "max-file":"3"}
}

注意:需要重启docker


你可能感兴趣的:(docker的日志清理)