Docker清理磁盘空间

2023年 9月 7日 77.0k 0

Docker清理磁盘空间

在日常运维当中,Docker会产生一些运行时的临时文件,我们需要定时的清理掉他们,不然将会对磁盘造成极大的压力。

探查命令

查看整个Docker系统的磁盘占用情况:

docker system df

查看每一个Docker容器和镜像的磁盘占用情况:

docker system df -v

查看系统整体的磁盘占用情况:

df -h

查看当前文件夹下所有子文件夹的磁盘占用情况:

du -ah --max-depth=1

# 按照文件大小从大到小排序
du -ah --max-depth=1 .|sort -hr

查看当前文件夹以及所有子文件夹的磁盘占用汇总:

du -sh *

# 按照文件大小从大到小排序
du -sh *|sort -nr

Docker命令常规清除

清除掉Docker的:停止的容器、无用镜像、缓存、挂载数据 (这条命令需要谨慎,因为暂时停止的容器也会被干掉):

sudo docker system prune -a

清除掉无用的镜像:

sudo docker image prune -f

清除掉无用的容器:

docker container prune - f

清除掉无用的数据卷:

docker volume prune - f

清除掉无用的网络:

docker network prune - f

清除掉Build的缓存:

sudo docker builder prune -f

清除掉/var/lib/docker/containers下的日志文件

占据磁盘空间的主要是以下文件:

/var/lib/docker/containers//-json.log

这个应该是容器的日志(非容器内部运行日志)。可以使用以下脚本进行清除:

#!/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 ========"

清除掉/var/lib/docker/overlay2/下的日志文件

#!/bin/bash
echo "======== start clean docker overlays logs ========"
logs=$(find /var/lib/docker/overlay2/ -name *.log)
for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker overlays logs ========"

这个文件夹下面的文件是容器实质内容物的存放地。所以,这下面的增量文件也应该是容器内程序的运行时日志等。

集大成者清理脚本

#!/bin/bash

sudo docker image prune -f
sudo docker builder prune -f

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 ========"

echo "======== start clean docker overlays logs ========"
logs=$(find /var/lib/docker/overlay2/ -name *.log)
for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker overlays logs ========"

参考资料

  • 清理Docker垃圾
  • 快速清理Docker垃圾文件,释放硬盘空间
  • Docker容器占用磁盘内存过大的问题排查
  • Docker 容器磁盘占用100%(/var/lib/docker/overlay2空间占用很大)
  • docker 清理 overlay2
  • docker中 启动所有的容器命令

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论