【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 可以解决这个问题

相关推荐
行思理1 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
..Move...2 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
Jenwein4 小时前
Linux中使用docker的网络问题
后端·docker
java_logo6 小时前
Docker 部署 Debian 全流程教程
linux·运维·docker·容器·debian
❀͜͡傀儡师6 小时前
基于 docker compose 进行部署PandaWiki
运维·docker·容器
老朋友此林7 小时前
一文速通k8s基础概念原理Kubernetes
云原生·容器·kubernetes
Xiaoweidumpb8 小时前
Linux Docker docker-compose 部署python脚本
linux·python·docker
Broken Arrows8 小时前
解决同一个宿主机的两个容器无法端口互通报错“No route to host“的问题记录
运维·学习·docker
VermiliEiz10 小时前
k8s的calico出现ipset报错解决方法
云原生·容器·kubernetes
路漫漫其修远兮sjw10 小时前
llamafactory拉取并启动(本地虚拟机)
docker·模型微调·1024程序员节·模型调用