孤岛Docker挂载主机卷?

时间:2015-01-07 05:13:57

标签: docker mounted-volumes

我刚检查了我的/ 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手动丢弃这些条目?

3 个答案:

答案 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"基于驱动程序的卷