# 背景
开发环境遇到一台服务器磁盘空间耗尽的问题,经排查发现是Docker虚拟卷的的overlay目录不断膨胀,占用磁盘过多。这里记录一下排查及修复思路
# 参考文档
- https://zhuanlan.zhihu.com/p/100793598
- https://blog.csdn.net/u011240463/article/details/129185142
- https://juejin.cn/post/7016872244408221732
# 分析docker磁盘占用
# 1.使用docker命令查看资源占用
|
|
列出了docker 使用磁盘的 4 种类型: Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。 Containers:运行的容器占用的空间,表示每个容器的读写层的空间。 Local Volumes:容器挂载本地数据卷的空间。 Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。
# 2. docker容器占用的磁盘空间
每次创建一个容器时,都会有一些文件和目录被创建,例如:/var/lib/docker/containers/ID
目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。/var/lib/docker/overlay2
目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。
当一些容器中代码出错,不断写入数据或日志时,就会造成/var/lib/docker/overlay2
目录不断膨胀,占用大量磁盘。
因此,通过linux命令,去分析/var/lib/docker/overlay2
目录中占用大空间的路径,再去找到对应的容器,也是一种思路
# 清理docker占用
# 1. 清理docker日志文件
|
|
# 2. 清理docker系统的文件
包括无用镜像,无用卷,构建缓存等,执行命令清理
|
|
# 3. 解决overlay2文件夹占用磁盘过大
修改docker的/etc/docker/daemon.json配置文件,加入
|
|
这个配置表示:docker系统层为一个容器创建的单个日志最大为100m,最多存储5个。
然后重启docker
|
|
这样之后创建的新容器都会遵从这个日志的配置