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

相关推荐
百年孤独百年15 分钟前
docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)
运维·docker·容器·anythingllm·open-webui·docker国内镜像
被时间遗忘的猴子2 小时前
x86 Docker 环境构建 arm 架构镜像
docker·架构
dreams_dream10 小时前
docker启动jenkins,jenkins中调用docker
java·docker·jenkins
404测试13 小时前
RAGFlow版本升级-Win10系统Docker
运维·docker·容器
solomonzw14 小时前
linux学习(十六)(集装箱(ulimits,cgroups,容器运行时,Docker))
linux·学习·docker
Pee Wee15 小时前
Linux服务器使用docker离线安装MySQL
linux·服务器·docker
skywalk816316 小时前
Windows10下docker desktop命令行操作指南(大部分也适用于Linux)
运维·docker·容器
二楼后座。19 小时前
mac 被禁用docker ui后,如何使用lima虚拟机启动docker
macos·docker·容器·lima
ThisIsClark19 小时前
【K8s】使用Kubernetes的resources字段中的requests和limits字段控制Pod资源使用
云原生·容器·kubernetes
cllsse20 小时前
docker逃逸-cve-2019-5736
网络安全·docker