文章目录
一、容器日志清理
1.查看容器日志大小
find /var/lib/docker/containers/ -name *-json.log |xargs du -sh
2.运行时进行控制
# max-size:容器日志最大500M
# max-file:最大日志数3个(*-json.log, *-json.log.1, *-json.log.2)
docker run -it --log-opt max-size=500m --log-opt max-file=3 java:8u111
3.容器日志全局设置(只对新建的容器有效)
// 1.全局设置日志大小和生成日志文件个数
// (vim /etc/docker/daemon.json)
{
"log-driver": "json-file",
"log-opts": {
"max-size": "500m",
"max-file": "3"
}
}
// max-size=500m,意味着一个容器日志大小上限是500M
// max-file=3,容器有三个日志,分别是id+json,id+1.json,id+2.json
// 2.重启docker守护进程
systemctl daemon-reload
systemctl restart docker
// 注意:设置的日志大小,只对新建的容器有效
4.日志清理脚本:clean_docker_log.sh
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null *-json.log,当然你也可以通过rm -rf删除后重启docker。
// 设置执行权限
chmod +x clean_docker_log.sh
// 执行
./clean_docker_log.sh
5.日志大小脚本:docker_log_size.sh
#!/bin/sh
echo "======== docker containers logs file size ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
ls -lh $log
done
// 设置执行权限
chmod +x docker_log_size.sh
// 执行
./docker_log_size.sh
二、/var/lib/docker/overlay2磁盘空间占用太大问题
1.Docker System命令
docker system df
用于查看Docker的磁盘使用情况:
[root@Docker110 ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 6 18.32GB 2.754GB (15%)
Containers 7 0 2.227GB 2.227GB (100%)
Local Volumes 2 2 3.92GB 0B (0%)
Build Cache 0 0 0B 0B
可知,Docker镜像占用了18.3GB磁盘,Docker容器占用了2.2GB磁盘,Docker数据卷占用了3.9GB磁盘。
docker system prune
命令可以用于清理磁盘
docker system prune -a
- 已停止的容器(container)
- 未被任何容器所使用的卷(volume)
- 未被任何容器所关联的网络(network)
- 所有悬空镜像(image)
- -a: 清除所有未使用的镜像和悬空镜像。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要慎重
2.清理未使用的数据卷
# 清理掉未被使用的数据卷
docker volume prune
# 不用输入y确认
docker volume prune -f