linux磁盘满了
查看占用空间scadminalpha:~$df-hFilesystem Size Used Avail Use% Mounted on tmpfs 783M2.5M 781M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 80G 72G4.1G95% / tmpfs3.9G03.9G0% /dev/shm tmpfs5.0M05.0M0% /run/lock /dev/vda22.0G 260M1.6G15% /boot /dev/vda11.1G6.1M1.1G1% /boot/efi tmpfs 783M4.0K 783M1% /run/user/1000查看具体是那个目录占用空间大scadminalpha:~$sudodu-h--max-depth1/2/dev/null|sort-hr|head-n1586G / 66G /var6.3G /home6.2G /usr1.4G /opt1.3G /snap 266M /boot 73M /tmp 11M /etc2.6M /run2.4M /root 16K /lostfound4.0K /srv4.0K /mnt4.0K /media(通常 /var 目录是占用最大的因为里面包含了 Docker 目录 /var/lib/docker 和系统日志 /var/log)由上可见/var目录占用最大 scadminalpha:~$sudodu-h--max-depth1/var2/dev/null|sort-hr|head-n10由该命令输出可见/var/lib占用最大再查看/var/lib目录的占用情况 scadminalpha:~$sudodu-h--max-depth1/var/lib2/dev/null|sort-hr|head-n10由该命令输出可见/var/lib/docker占用最大再查看/var/lib/docker 目录的占用情况 scadminalpha:~$sudodu-h--max-depth1/var/lib/docker2/dev/null|sort-hr|head-n1063G /var/lib/docker 31G /var/lib/docker/overlay2 31G /var/lib/docker/containers 684M /var/lib/docker/tmp 503M /var/lib/docker/volumes 38M /var/lib/docker/image 24M /var/lib/docker/buildkit 244K /var/lib/docker/network 16K /var/lib/docker/plugins4.0K /var/lib/docker/trust 从输出可以看出/var/lib/docker 占用了 63G 空间而且被两个目录平分了 /var/lib/docker/containers(31G)存放容器配置和 容器的运行日志。 /var/lib/docker/overlay2(31G)存放 Docker 镜像层 以及容器运行时的 只写层你在容器里产生临时文件或写入数据都会存在这里。 原因1. 容器日志暴涨(占了 31G /containers)为什么Docker 默认会将容器中所有输出到控制台stdout/stderr的日志以 JSON 格式保存在本地。默认情况下Docker 不会自动清理或限制这些日志文件的大小。运行时间长了或者日志输出密集的容器就会把磁盘占满。 解决办法 - 立即清理 一行命令直接清空所有容器日志sudosh-ctruncate -s 0 /var/lib/docker/containers/*/*-json.log- 永久解决配置日志上限 修改 Docker daemon 的配置文件限制单个日志文件大小为 50M且最多保留3个旧文件。 编辑 /etc/docker/daemon.json如果文件不存在则新建{log-driver:json-file,log-opts:{max-size:50m,max-file:3}}重启 Docker 生效sudosystemctl daemon-reloadsudosystemctl restartdocker2. 冗余镜像或容器内写了太多垃圾文件(占了 31G /overlay2)为什么每次你更新部署、构建新镜像旧版本的镜像由于不再被标签指向会变成“悬空镜像Dangling Images”堆积在 overlay2 中。 如果你的应用程序在容器内部生成了缓存、日志或临时文件而不是写入到挂载卷 volumes 里这些文件就会写入到容器的“可写层overlay2”中导致 overlay2 极度膨胀。 解决方法# 1. 彻底清理未使用的镜像、停止的容器和无用的构建缓存dockersystem prune-a# 2. 如果使用到了构建缓存也清理一下dockerbuilder prune-a# 查看所有容器的真实磁盘占用Size 是容器镜像大小Virtual size 是包括写层在内的大小dockerps-as