使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,通过命令df -h
发现overlay占用较高。通过命令docker system prune -a
清理无用镜像、缓存、挂载数据,也没有什么改变。prune
指令默认会清除所有如下资源:
- 已停止的容器(container)
- 未被任何容器所使用的卷(volume)
- 未被任何容器所关联的网络(network)
- 所有悬空镜像(image)。
查询 overlay的作用的时候知道:
容器的磁盘占用
每次创建一个容器时,都会有一些文件和目录被创建,例如:
- /var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。
- /var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。
进入到/var/lib/docker/containers
目录下 通过du -h --max-depth=1
查找大文件占用,发现这些文件中占用空间最大的是***-json.log**文件。而此文件的内容为docker生成的日志文件。
清理脚本:
#!/bin/bash
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 ========"
执行完脚本之后,通过命令df -h
发现 /var/lib/docker/overlay2/ID
的占用还是很大
由于构建的镜像,项目日志是存在本地的所以找到日志文件在本地的位置进行清理项目日志文件减少磁盘占用
参考:
http://www.choupangxia.com/2019/09/15/linux-centos-var-lib-docker-container%E7%9B%AE%E5%BD%95%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E5%AD%98%E5%82%A8%E7%88%86%E6%BB%A1%EF%BC%8C%E5%8D%A0%E7%94%A8%E5%A4%A7%E9%87%8F%E5%AD%98%E5%82%A8%E8%A7%A3/文章来源:https://www.toymoban.com/news/detail-479458.html
https://crycrycry.blog.csdn.net/article/details/111244328?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&utm_relevant_index=4文章来源地址https://www.toymoban.com/news/detail-479458.html
到了这里,关于亲测有效:docker清理Overlay2占用磁盘空间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!