如何查看哪个容器使用哪个docker卷

时间:2016-02-26 15:39:24

标签: docker docker-compose

我可以使用docker ps (-a)列出所有容器,我可以列出docker volumes ls的所有卷,当我检查volume时,我可以看到name,{{1 }和driver,但不是它正在使用的容器。

当我使用mountpoint时,我可以看到像这样的Mount数据:

docker inspect <container>

所以从理论上讲,我可以编写一个循环遍历所有容器的脚本,以便按名称匹配特定的"Mounts": [ { "Name": "centos_db_symfony", "Source": "/var/lib/docker/volumes/centos_db_symfony/_data", "Destination": "/var/lib/mysql", "Driver": "local", "Mode": "rw", "RW": true, "Propagation": "rprivate" }, 。但我通过volume运行了一些容器,并没有将某个名称(就像现在可能在v2中)绑定到某些卷,所以它们在docker-compose列表中显示为sha256,就像这样:

docker volume ls

在这种情况下DRIVER VOLUME NAME local 34009871ded5936bae81197247746b708c3ec9e9b9832b702c09736a90...etc local centos_data local centos_db_symfony (示例)是在我在34009871ded5docker-compose之后命名卷之前创建的。

问题

当更新centos_db_symfony卷信息时,就像在这种情况下更新名称和docker-compose.yml中的信息一样,历史记录永远丢失,或者我可以找出卷使用的容器?如果是这样,是否还可以恢复这样的旧卷?

额外信息

docker inspect <container>

1 个答案:

答案 0 :(得分:10)

Docker v1.11开始,您可以按ps过滤volume!很遗憾,previous versions无法使用此功能。

以下是如何使用它:

docker ps -f "volume=/var/lib/mysql" 

docker ps -f "volume=centos_db_symfony"