孤岛Docker挂载主机卷?

Dro*_*dOS 62 docker mounted-volumes

我只是检查了我的/ var/lib/docker/volumes文件夹,发现它正在破坏名为Docker UUID的文件夹,每个文件夹都包含一个config.json文件,其中的内容沿着

{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}
Run Code Online (Sandbox Code Playgroud)

哪里

/path/to/mounted/volume
Run Code Online (Sandbox Code Playgroud)

是主机上的文件夹的路径,该文件夹在某个时刻使用-v开关安装到docker容器上.我有这样的文件夹可以追溯到我使用Docker进行实验的开始,即大约3周前.

有问题的容器很久以前就被停了下来,并且很久以前就停泊了这些容器,所以我看不出那些条目没有超过他们的销售日期.这引出了一个问题 - 剩下的就是我看到了一个错误,还是需要从/ var/lib/docker/volumes手动丢弃这些条目?

Rom*_*nko 138

对于Docker 1.9及更高版本,有一种原生方式:

列出所有孤立的卷

$ docker volume ls -qf dangling=true

消除所有这些

$ docker volume rm $(docker volume ls -qf dangling=true)

  • ......这里是容器和图像的等价物:`docker ps -q --filter"status = exited"| xargs docker rm`和`docker images -qf'dangling = true'| xargs码头工人rmi` (3认同)

Kev*_*ist 28

从Docker用户指南:

如果删除装入卷的容器(包括初始dbdata容器)或后续容器db1和db2,则不会删除卷.要从磁盘中删除卷,必须使用对卷的引用对最后一个容器显式调用docker rm -v.这允许您在容器之间升级或有效迁移数据卷.- 来源

这是故意的行为,以避免意外的数据丢失.您可以使用docker-cleanup-volumes等工具清除未使用的卷.

  • 对.烦人,不是吗?我想我们将很快获得更多处理数量的工具. (3认同)

Mat*_*att 9

对于Docker 1.13+和ce/ee 17+版本号,请使用该volume prune命令

docker volume prune
Run Code Online (Sandbox Code Playgroud)

dangling=true查询不同,这不会删除基于"远程"驱动程序的卷.