docker 清理日志,设置文件系统
来源:原创
时间:2020-12-02
作者:脚本小站
分类:云原生
清理日志:
如下目录是docker的日志文件:有时会很大达到几十个G。
cd /var/lib/docker/containers 06f1bdf54fbad730ed5ea8401a2137f52f0b1029875525233e2b0aeae22a22e1-json.log
清理即可:如果容器在运行期间不可直接删除,而只能清空文件。
cat /dev/null > 06f1bdf54fbad730ed5ea8401a2137f52f0b1029875525233e2b0aeae22a22e1-json.log
自动清理脚本:
find /var/lib/docker/containers/*/*.log -type f -exec sh -c 'cat /dev/null > "{}"' \;
方法2:
#!/bin/bash set -x export LOGPATH=/var/lib/docker/containers for var in `ls $LOGPATH` do size=`du -sm $LOGPATH/$var | awk '{print $1}'` if [ $size -gt 1024 ]; then du -sh $LOGPATH/$var/$var-json.log cat /dev/null > $LOGPATH/$var/$var-json.log fi done
限制docker日志文件大小:
max-file: "3",意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json
max-size: "1g",滚动前日志的最大大小。一个正整数加上一个代表测量单位(k,m 或 g)的修饰符。默认为 -1(无限制)。
vim /etc/docker/daemon.json { "log-driver":"json-file", "log-opts": {"max-size":"20m", "max-file":"3"} }
重启docker:
systemctl daemon-reload systemctl restart docker
清理其他空间:
查看docker占用的磁盘空间:
$docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 33 33 6.363GB 669.6MB (10%) Containers 74 49 -74B -25B Local Volumes 7 0 12.68kB 12.68kB (100%) Build Cache 0B 0B $docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 33 18 6.363GB 3.821GB (60%) Containers 49 49 -49B 0B Local Volumes 7 0 12.68kB 12.68kB (100%) Build Cache 0B 0B
清理:
docker system prune docker system prune -a # 暂时关闭的容器镜像也会删除
参考:
blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/
定时任务清理:
#!/bin/bash export DIR=/var/lib/docker/containers export BIG_DIR_LIST=`du -sh $DIR/* | grep G| awk '{print $2}'` for var in $BIG_DIR_LIST do log_dir_name=`basename $var` big_log_file=$DIR/$log_dir_name/$log_dir_name'-json.log' if [ -f $big_log_file ]; then cat /dev/null > $big_log_file echo "cat /dev/null > $big_log_file" >> /tmp/clear.log fi done
设置文件系统类型:
vim /etc/docker/daemon.json { "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }
指定数据目录:存放docker镜像等数据。
{ "data-root": "/data/docker" }