家里自己部署docker服务的虚拟机磁盘报警了,发现是一个容器打日志太多导致的,业务也不重要就删除了,之后发现容量依然占用很高(超过50%):
用du命令调查了大文件:
[root@bogon docker]# pwd
/var/lib/docker
[root@bogon docker]# du -h --max-depth=1
21M ./containers
0 ./plugins
16G ./overlay2
23M ./image
24K ./volumes
0 ./trust
116K ./network
0 ./swarm
0 ./tmp
0 ./runtimes
1.5M ./buildkit
16G .
发现docker的overlay2文件夹占用太大,里面可能有很多未使用的镜像和构建缓存,清理方法如下:
-
删除未使用的容器、镜像、卷和网络:
使用docker system prune
命令可以清理未使用的资源。添加-a
参数可以删除未被任何容器引用的镜像。docker system prune -a
要仅清理特定类型的资源,请使用以下命令之一:
docker container prune docker image prune docker volume prune docker network prune
-
删除特定容器、镜像或卷:
你可以使用docker rm
、docker rmi
和docker volume rm
命令删除特定的容器、镜像或卷。docker rm <container_id> docker rmi <image_id> docker volume rm <volume_name>
-
清理未挂载的卷:
你可以使用docker volume ls -qf dangling=true
列出未挂载的卷,然后使用xargs
删除它们。docker volume ls -qf dangling=true | xargs docker volume rm
-
清理特定标签的镜像:
如果你想删除特定标签的镜像,可以使用docker images
命令列出所有镜像,然后使用grep
筛选特定标签的镜像,并使用xargs
删除它们。docker images | grep '<your_tag>' | awk '{print $3}' | xargs docker rmi
完成清理后,可以再次检查 /var/lib/docker/overlay2
文件夹,已清理的空间应该已经释放。
全部评论