前言


在使用docker容器时候,其日志的管理是我们不得不考虑的事情。因为docker容器的日志文件会占据大量的磁盘空间。下面介绍的就是对docker容器日志的管理。



docker容器日志清理


docker容器的日志一般存放在/var/lib/docker/containers/下的container_id下,以json.log为结尾。
(每个容器会生成一个对应的container_id)
在这里插入图片描述

在这里插入图片描述


【1】查看所有docker容器日志的大小


find /var/lib/docker/containers/ -name *-json.log |xargs du -sh

在这里插入图片描述



【2】清理Docker容器日志


docker容器运行时,使用rm的方式删除日志文件,是无用的,磁盘空间仍会被占用。
因为在Linux中,使用rm删除文件,只是从文件系统的目录结构上解除链接。如果有一个进程正在使用这个文件,进程将仍然可以读取该文件,磁盘空间也会一直被占用。

可以像处理tomcat的日志的方式对容器日志进行清空或切割。


<1>docker容器日志清理脚本(清理所有docker容器的日志)

clean_dockerlog.sh


#!/bin/sh 

logs=`find /var/lib/docker/containers/ -name *-json.log`  

for docker_log in $logs  
do  
echo " "  > $docker_log  
done  


<2>docker容器日志切割脚本(切割所有docker容器日志)

qie_dockerlog.sh
 

#!/bin/bash 

 logs=`find /var/lib/docker/containers/ -name *-json.log` 

for docker_log in $logs  
do  
     DATE=`date +%F`
     cp $docker_log  $docker_log/../dockerlogs.$DATE
     echo " " > $docker_log
done

chmod +x /root/qie_dockerlog.sh
可以将脚本放入计划任务中,定期执行。
crontab  -e
* * 3 * * /bin/bash   /root/qie_dockerlog.sh


后记


实际上,对docker容器的日志及其他的管理,我们也可以使用docker compose来实现。它的优点是可以通过一个配置文件来管理多个Docker容器。这个由于内容比较多,就先放到以后再介绍了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐