如何清理Docker不用的Volume

有一句老话叫:书到用时方恨少。

其实电脑的内存空间也是非常宝贵,特别是MacOS下的docker可以分配的空间更是寸土寸金。

在21年的时候我也遇到过类似的问题,当时的经历记录在这篇博客:https://www.cnblogs.com/freephp/p/14864570.html

然而在长时间的docker使用中,我发现光是这种程度的空间清理是不够的。定期执行prune命令,依然还是耗尽了最后的分配给docker磁盘空间。直到有一天我再也无法顺利启动我的数据库容器,我才发现空间已经只剩10MB。

于是我反复尝试和思考, 发现有很多被使用到的Volume并没有因为容器停止或者删除而释放出空间,这才是吞噬磁盘空间的罪魁祸首。

基本思考就是:

先找到没被使用的volumes,然后用命令删除这些volumes。

最开始我是想用bash去执行docker命令实现,但是为了更好的扩展性和代码可读性,我选择用python的docker库去实现。具体如下所示。

复制代码
import docker

# Create a Docker client
client = docker.from_env()

# List all unused volumes
unused_volumes = client.volumes.list(filters={"dangling": True})

# Print out the unused volumes
for volume in unused_volumes:
    print(f"Removing volume: {volume.name}")

# Remove each unused volume
for volume in unused_volumes:
    try:
        volume.remove()
        print(f"Successfully removed volume: {volume.name}")
    except Exception as e:
        print(f"Error removing volume {volume.name}: {e}")

# Clean up and close the client
client.close()
相关推荐
IT199519 分钟前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
wzg201629 分钟前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)36 分钟前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
方便面不加香菜2 小时前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器
Star(up up up)2 小时前
Docker系列---Dockerfile镜像文件
人工智能·经验分享·学习·程序人生·docker·容器·github
-星空下无敌2 小时前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
芥子沫3 小时前
从零开始用 Docker 部署 Hoppscotch:自建 API 调试平台的完整教程
docker·接口测试·api开发·api管理
yujunlong39193 小时前
[特殊字符] Serverpod 4.1.0 全栈项目开发与 Docker 部署规范文档
flutter·docker·serverpod
时间售卖铺4 小时前
Docker私有仓库搭建与实战指南
运维·docker·云原生·容器
DarkAthena4 小时前
【GaussDB】把GaussDB开发者版本做成88MB的docker镜像
docker·gaussdb