【docker 实战】Docker数据卷的清理

Docker 查看数据卷及磁盘使用情况

Docker 在长时间使用的情况下,经常需要删除旧的容器并创建新的容器,长此以往,Docker 的数据卷 volumes 会产生了非常多的僵尸文件,这些将是稳健大都是未绑定容器的目录

查询僵尸文件

在 Docker 1.9 以上的版本中,官方提供用于查询僵尸文件的命令:

bash 复制代码
docker volume ls -qf dangling=true

Docker 1.13 引入了类似于 Linux 上 df 的命令,用于查看 Docker 的磁盘使用情况

bash 复制代码
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 306.6MB 233.7MB (76%)
Containers 1 1 12.62GB 0B (0%)
Local Volumes 20 0 16GB 16GB (100%)
Build Cache 0 0 0B 0B

上述信息可以看出

Docker 镜像占用了 306.6MB 磁盘,

Docker 容器占用了 12.62GB 磁盘,

Docker 数据卷占用了 16GB 磁盘。

Docker 删除无用数据卷

手动删除命令

删除所有dangling数据卷(即无用的Volume,僵尸文件)

bash 复制代码
docker volume rm $(docker volume ls -qf dangling=true)

删除所有dangling镜像(即无tag的镜像)

bash 复制代码
docker rmi $(docker images | grep "^" | awk "{print $3}")

删除所有关闭的容器

bash 复制代码
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)

注意,所有关闭的容器都会被删除,请核查是否存在关闭运行但是需要保留的容器

删除关闭的容器、无用的数据卷和网络

bash 复制代码
docker system prune

删除更彻底,可以将没有容器使用Docker镜像都删掉

bash 复制代码
docker system prune -a

重启 Docker

使用上面几个方法的命令可以有效清理 Docker 运行所产生的无用文件,且无需重启 Docker 即可生效。

但是 Docker 也许存在某些 bug(内核 3.13 版本的 Docker 确诊),导致 Docker 无法清理一些无用目录,不过重启 Docker 可以解决这个问题

相关推荐
白云coy1 小时前
如何在 Ubuntu 24.04 LTS 上安装 Docker
ubuntu·docker·eureka
小和尚同志1 小时前
全网影视一网打尽!LibreTV App 来了
docker·容器·开源
codeRichLife2 小时前
离线安装docker和docker-compose
docker
David爱编程5 小时前
kube-proxy与CNI 的关系详解:职责划分与协同机制
云原生·容器·kubernetes
青禾智源10 小时前
CentOS7中Docker的安装与卸载
docker
钱彬 (Qian Bin)12 小时前
解决docker load加载tar镜像报json no such file or directory的错误
运维·docker·容器·错误·tar·docker load
追风筝的小青年13 小时前
ubuntu24中部署k8s 1.30.x-底层用docker
docker·容器·kubernetes
贝锐13 小时前
Docker本地部署青龙面板,如何用内网穿透工具实现远程访问?
网络·docker
core51215 小时前
fastdfs快速部署、集成、调优
docker·部署·springboot·fastdfs·调用
木雷坞15 小时前
docker国内镜像源列表
运维·docker·容器