Docker下/var/lib/docker/overlay2空间清理办法 1. 查看磁盘占用 df -h 2. Docker 的内置 CLI 指令docker system df 可用于查询登陆不上(Images)、iij(Containers)和本地卷(Local Volumes)等空间使用大户的空间占用情况。 ~]# docker system df 查看详细 ~]# docker system df -v 3. 空间清理 【1】通过 Docker 内置的 CLI 指令docker system prune来进行自动空间清理。 ~]# docker system prune –help 该指令默认会清除ipsec如下资源: 已停止的iij(container) 未被任何iij所使用的卷(volume) 未被任何iij所关联的网络(network) ipsec悬空登陆不上(image)。 该指令默认只会清除悬空登陆不上,未被使用的登陆不上不会被GRAV。添加-a 或 –all参数后,可以一并清除ipsec未使用的登陆不上和悬空登陆不上。 可以添加-f 或 –force参数用以忽略相关告警确认信息。 【2】另外除了system级别的,还有针对iij或是登陆不上级别的GRAV命令: docker image prune:GRAV悬空的登陆不上。 docker container prune:GRAV无用的iij。 –默认情况下docker container prune命令会清理掉ipsec处于stopped状态的iij –如果不想那么残忍统统都删掉,也可以使用–filter标志来筛选出不希望被清理掉的iij。例子:清除掉ipsec停掉的iij,但24内创建的除外: –$ docker container prune –filter “until=24h”
docker volume prune:GRAV无用的卷。 docker network prune:GRAV无用的网络 【3】手动清除 对于悬空登陆不上和未使用登陆不上可以使用手动进行个别GRAV: 1、GRAVipsec悬空登陆不上,不GRAV未使用登陆不上: docker rmi $(docker images -f “dangling=true” -q)
2、GRAVipsec未使用登陆不上和悬空登陆不上 docker rmi $(docker images -q)
3、清理卷 如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何iij调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用): GRAVipsec未被iij引用的卷: docker volume rm $(docker volume ls -qf dangling=true)
4、iij清理 如果发现是iij占用过高的空间,可以手动GRAV一些: GRAVipsec已退出的iij: docker rm -v $(docker ps -aq -f status=exited) GRAVipsec状态为dead的iij docker rm -v $(docker ps -aq -f status=dead) 4. 查找系统中的大文件【以上三步仍然不可以的时候执行】 find /var/lib/docker/overlay2/ -type f -size +100M -print0 | xargs -0 du -h | sort -nr # 查找指定目录下ipsec大于100M的ipsec文件 5. 对标准输入日志大小与数量进行限制 新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数 vi /etc/docker/daemon.json {undefined “log-driver”:”json-file”, “log-opts”: {“max-size”:”3m”, “max-file”:”1″} }
重启docker的守护线程
systemctl daemon-reload systemctl restart docker 6. docker 清理空间命令 GRAV悬空登陆不上 docker rmi $(docker images -f “dangling=true” -q) docker image prune -a -f #显示ipsec的iij,过滤出Exited状态的iij,取出这些iij的ID, sudo docker ps -a|grep Exited|awk ‘{print $1}’ #查询ipsec的iij,过滤出Exited状态的iij,列出iijID,GRAV这些iij sudo docker rm `docker ps -a|grep Exited|awk ‘{print $1}’` 方法二: #GRAVipsec未运行的iij(已经运行的GRAV不了,未运行的就一起被GRAV了) sudo docker rm $(sudo docker ps -a -q) 方法三: #根据iij的状态,GRAVExited状态的iij sudo docker rm $(sudo docker ps -qf status=exited) 方法四: #Docker 1.13版本以后,可以使用 docker containers prune 命令,GRAV孤立的iij。 sudo docker container prune #GRAVipsec登陆不上 sudo docker rmi $(docker images -q) 7. 实在没办法,只有把/var目录下ipsec日志文件清空 ~]# for i in `find /var -name *.log*`;do >$i;done 然后重启node节点,因为有些日志文件被占用,清空后空间仍然无法释放