docker日志占用过大问题

df -h 查看存储空间使用情况,发现 /data 目录空间已满

docker清理不出多余的空间了

img

查看docker目录下占用情况

img

分别查看overlay2和containers目录下占用情况

img

overlay2:

img

docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "357860f908577317c242ff3ff7005744dd7bd22e4504a2716780ec3db07f462a"

发现nacos和mysql占用比较大的存储空间(nacos不是很理解为什么这么大)

Containers:

[root@localhost containers]# docker ps -a | grep e706624ef
e706624efba9   lafyun/instance-controller:latest                       "docker-entrypoint.s…"   4 months ago    Up 4 months   0.0.0.0:49155->9000/tcp, :::49155->9000/tcp                                                                                                           docker-compose-instance-controller-1
[root@localhost containers]# docker ps -a | grep c0f11440fad
c0f11440fad1   grafana/loki:2.2.0                                      "/usr/bin/loki -conf…"   3 months ago    Up 3 months   0.0.0.0:3100->3100/tcp, :::3100->3100/tcp                                                                                                             test-loki

发现loki占用很大,暂时停掉删除

解决方法:

img

日志文件太大,手动删除或者设置最大日志大小限制

控制容器日志大小

以上只是临时解决的方式,最好是创建容器时就控制日志的大小。

运行时控制

启动容器时,我们可以通过参数来控制日志的文件个数和单个文件的大小

# max-size 最大数值
# max-file 最大日志数
$ docker run -it --log-opt max-size=10m --log-opt max-file=3 redis

一两个容器还好,但是如果有很多容器需要管理,这样就很不方便了,最好还是可以统一管理。

全局配置

创建或修改文件 /etc/docker/daemon.json,并增加以下配置

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

max-size=50m,意味着一个容器日志大小上限是50M, max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。可以存在的最大日志文件数。如果超过最大值,则会删除最旧的文件。**仅在max-size设置时有效。默认为5。

随后重启 Docker 服务

不过已存在的容器不会生效,需要重建才可以

转至 https://www.cnblogs.com/zhangmingcheng/p/13960496.html

另一方面,docker所在的磁盘空间不足,linux一直往主磁盘写空间不足的日志,导致主磁盘的空间也不足

img