我刚检查了我的/ var / lib / docker / volumes文件夹,发现它正在破坏名为Docker UUID的文件夹,每个文件夹都包含一个带有内容的config.json文件
{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}
,其中
/path/to/mounted/volume
是主机上文件夹的路径,该文件夹安装在具有-v开关的docker容器上。我有这样的文件夹可以追溯到我使用Docker的实验开始,即大约3周前。
有问题的容器很久以前就停了下来并且停泊了这些容器,所以我看不出那些条目没有超过他们的销售日期。这引出了一个问题 - 剩下的就是我看到了一个错误,还是需要从/ var / lib / docker / volumes手动丢弃这些条目?
答案 0 :(得分:136)
对于Docker 1.9及以上的原生方式:
使用
列出所有孤立的卷 $ docker volume ls -qf dangling=true
使用
消除所有这些 $ docker volume rm $(docker volume ls -qf dangling=true)
答案 1 :(得分:28)
来自Docker用户指南:
如果删除装入卷的容器(包括初始dbdata容器)或后续容器db1和db2,则不会删除卷。要从磁盘中删除卷,必须使用对卷的引用对最后一个容器显式调用docker rm -v。这允许您在容器之间升级或有效迁移数据卷。 - source
这是故意避免意外数据丢失的行为。您可以使用docker-cleanup-volumes之类的工具清理未使用的卷。
答案 2 :(得分:9)
对于Docker 1.13+和ce / ee 17+版本号,请使用volume prune
command
docker volume prune
与dangling=true
查询不同,这不会删除" remote"基于驱动程序的卷