#docker 设置日志文件限制防止磁盘被占满
问题背景
使用docker时,如果不设置日志文件的大小,所有的docker容器输出的日志都会保存下来,直到占满所有的磁盘空间。
这是因为,默认的日志设置为json-file,为了与旧版本docker兼容,这个设置没有添加日志限制。
来自官方的提示:
https://docs.docker.com/config/containers/logging/configure/
解决方法
有两种
1. 修改全局日志选项
- 1). 打开docker的daemon.json文件
sudo vi /etc/docker/daemon.json
- 2). 添加日志限制
可以使用默认有日志限制的local日志
{
...
"log-driver": "local"
}
关于local日志的默认值
- max-size=20m
- max-file=5
- compress=false
或者
为默认的json-file日志选项添加限制
https://docs.docker.com/config/containers/logging/json-file/
{
...
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- 3). 重启docker
sudo systemctl restart docker
- 4). 重新创建容器
docker重启后,所有新容器都会使用新的日志选项,但是已经创建容器则会继续使用旧的选项。
所以,如果旧的容器还在运行,需要重新创建。
2. 为每个容器单独设置日志选项
举例
docker run -it --log-opt mode=non-blocking --log-opt max-buffer-size=4m alpine ping 127.0.0.1
其他
更多的日志选项,可以参考官方文档。
https://docs.docker.com/config/containers/logging/configure/
扫一扫关注微信公众号:耿直的IT男阿斌
聊一聊IT男眼中的世界