Docker 日志文件过大
Docker 在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加,本篇来了解一些控制日志文件的方法。
Docker 的日志文件存在 /var/lib/docker/containers 目录中,通过下面的命令可以将日志文件夹根据升序的方式罗列出来。
sudo du -d1 -h /var/lib/docker/containers | sort -h
64K /var/lib/docker/containers/4914c93d39f635623817326e3df30aa44c6798871ef209348224ee7b6dab5783
196K /var/lib/docker/containers/9a7c579f2f6867808b895a60edbc2863d48aa899c2b00766a610e68da76a0bb7
7.8M /var/lib/docker/containers/f85285f7c8b9b9e33e12a06a737e6d36d7b59e9f0fddb039d39d8d13f6b1d883
21M /var/lib/docker/containers/6e826c922a5ea74c4e41518b6e51e90f76b04482bf3cd02b9d48dba9339fec26
123M /var/lib/docker/containers/98ee996b9128d411e9fb3a72dbc5a7de4a9c9111edc81ca5ed42151be9b1775e
2.4G /var/lib/docker/containers/53e392941f9b5f76ce55de0e568d249be1afbb380b06594da5125f91e78466f2
2.6G /var/lib/docker/containers
有三种方式可以清理日志文件
清理单个文件
或者查看具体容器名称的日志位置
docker inspect 4914c93d39f635623817326e3df30aa44c6798871ef209348224ee7b6dab5783
查看日志文件大小信息
find /var/lib/docker/containers -name "*.log" -exec du -h {} \;
感觉哪个容器的日志太大就清理哪个
cat /dev/null > /var/lib/docker/containers/4914c93d39f635623817326e3df30aa44c6798871ef209348224ee7b6dab5783/4914c93d39f635623817326e3df30aa44c6798871ef209348224ee7b6dab5783-json.log
这样只是解决燃眉之急,并不是长久之计,最好是创建容器时就控制日志的大小.
运行时控制
启动容器时,我们可以通过参数来控制日志的文件个数和单个文件的大小
# max-size 最大数值
# max-file 最大日志数
docker run -it --log-opt max-size=1024m --log-opt max-file=3 redis
一两个容器还好,但是如果有很多容器需要管理,这样就很不方便了,最好还是可以统一管理。
全局配置
创建或修改文件 /etc/docker/daemon.json,并增加以下配置
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"1"
}
}
随后重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
不过已存在的容器不会生效,需要重建才可以