02-docker运维-04-容器的日志清理(解决docker、docker-compose启动容器前台日志太大问题)
前言
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