如何清理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()
相关推荐
川石课堂软件测试4 小时前
JMeter并发测试与多进程测试
功能测试·jmeter·docker·容器·kubernetes·单元测试·prometheus
吐个泡泡v5 小时前
Docker部署MySQL完整指南:从入门到实践
mysql·docker·容器·部署
一乐小哥5 小时前
Docker 拉取镜像超时?别再瞎抄配置了!亲测 3 个有效镜像源 + 避坑指南
linux·docker
GDAL6 小时前
Docker pull拉取镜像命令的入门教程
运维·docker·容器
tnan25226 小时前
记录docker使用kong consul postgresql配置dns异常解决
docker·kong·consul
cpsvps6 小时前
Docker存储卷备份策略于VPS服务器环境的实施标准与恢复测试
服务器·docker·容器
孫治AllenSun7 小时前
【Docker】安装kafka案例
docker·容器·kafka
江湖有缘16 小时前
【Docker项目实战】使用Docker部署todo任务管理器
docker·容器·eureka
MintonLee复现侠17 小时前
记录RK3588的docker中启动rviz2报错
docker·容器·ros·rk3588·rviz·rviz2
大明湖畔的小鳄鱼19 小时前
docker安装centos
docker·容器·centos