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

相关推荐
Linux运维老纪6 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
杨浦老苏7 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
杨浦老苏10 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
JunLan~11 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器
青草地溪水旁12 小时前
c++ list的front和pop_front的概念和使用案例
c++·容器·list
特立独行的猫a13 小时前
使用 Docker(Podman) 部署 MongoDB 数据库及使用详解
数据库·docker·podman
LUCIAZZZ15 小时前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka
特立独行的猫a18 小时前
Golang 应用的 Docker 部署方式介绍及使用详解
开发语言·docker·golang
IT艺术家-rookie19 小时前
k8s--部署k8s集群--控制平面节点
容器·kubernetes
康世行19 小时前
Windows环境下MaxKB大模型 Docker部署图文指南
windows·docker·容器