docker日志过大清理文档

docker日志过大清理文档

背景:docker服务使用时间久,docker会一直堆积日志。导致磁盘空间过小,这时候就需要清理服务日志。


方案一:

此方案没有测试过,建议使用方案2,方案2,测试过,没有问题

可能由于docker部署的时候,挂载根目录,而根目录磁盘空间不是很大,在日积月累的情况下,会出现docker 日志文件过大,从而导致磁盘空间不足。这时间就需要清理日志。

此方案就是通过配置docker 日志大小,来解决。例如:/var/lib/docker/containers/xxx/xxx-json.log 文件过大了

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
在/var/lib/docker/containers目录下的Docker容器日志文件的大小是由Docker守护进程中的日志驱动程序配置决定的。默认情况下,Docker使用的是json-file日志驱动程序。

要配置这些日志文件的大小,可以在Docker守护进程的配置文件/etc/docker/daemon.json中添加日志驱动程序参数。以下是一种配置日志文件大小的方法:

打开Docker守护进程的配置文件/etc/docker/daemon.json(如果文件不存在,则创建它)。

在该文件中添加以下配置:

{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
这里使用的是json-file日志驱动程序,它将日志保存为JSON格式文件。

max-size参数用于指定每个日志文件的最大大小,单位可以是B(字节),k(千字节),m(兆字节)或g(吉字节)。

max-file参数用于指定保存的日志文件数量。

在这个示例中,每个日志文件的最大大小为10兆字节(10m),系统会自动轮转日志,并保留最多3个日志文件。

保存并关闭文件。

重启Docker守护进程,以使配置生效。可以使用以下命令重启Docker守护进程:

sudo systemctl restart docker
现在,/var/lib/docker/containers目录下的Docker容器日志文件的大小已经被配置为每个文件最大为10兆字节,最多保留3个文件。请注意,这对于新的容器会生效,对于已经运行的容器需要进行其他操作以使其生效。

方案二

通过清空docker 日志来达到效果

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
直接删除/var/lib/docker/containers目录下的日志文件可能会对正在运行的容器或已启动的服务产生不可预测的影响,因为容器的运行依赖于这些日志文件。虽然删除日志文件不会直接影响容器的运行,但会导致你无法查看容器的日志记录。

如果你想删除这些日志文件,最好的做法是使用Docker提供的日志管理工具来处理:

使用以下命令列出正在运行的容器:
docker ps
记录你要处理的容器的容器ID。

使用以下命令来获取指定容器的日志文件路径:
docker inspect --format='{{.LogPath}}' <容器ID>
替换<容器ID>为你要处理的容器的真实ID。

使用命令echo "" > <日志文件路径>清空该日志文件,而不是直接删除它。例如:
echo "" > /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
替换<日志文件路径>为第2步中获取的日志文件路径。

这样,你就将日志文件清空了,而不会删除它们。容器将继续将日志写入这些文件,但现有的日志将被清空。

请注意,如果你删除了整个/var/lib/docker/containers目录,将会丢失所有容器的配置和数据,包括正在运行的容器。如果需要删除整个目录,最好通过停止和删除容器后删除整个目录,并确保有备份所有重要的容器配置和数据。