如何查看哪个 docker 卷正在或正在被哪个容器使用
How to see which docker volume is or was being used by which container
我可以用 docker ps (-a)
列出所有容器,我可以用 docker volumes ls
列出所有卷,当我检查 volume
时,我可以看到 name
,driver
和 mountpoint
,但不是它正在使用的容器。
当我使用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
。但是我 运行 一些容器通过 docker-compose
,并且没有将名称(就像现在在 v2 中可能的那样)绑定到某些卷,所以它们在 docker volume ls
列表中显示为 sha256 ,像这样:
DRIVER VOLUME NAME
local 34009871ded5936bae81197247746b708c3ec9e9b9832b702c09736a90...etc
local centos_data
local centos_db_symfony
在这种情况下,34009871ded5
(示例)是在我将卷命名为 docker-compose
和 centos_db_symfony
之前创建的。
问题
当 docker-compose.yml
卷信息更新时,就像在这种情况下,使卷命名并更新 docker inspect <container>
中的信息,历史是否永远丢失,或者我可以找出卷是哪个容器被?使用如果是这样,是否也可以像这样恢复旧卷?
额外信息
docker-compose version 1.6.0, build d99cad6
Docker version 1.10.2, build c3959b1
截至 Docker v1.11 you can filter ps
by volume
s! Unfortunately this is not available in previous versions。
使用方法如下:
docker ps -f "volume=/var/lib/mysql"
或
docker ps -f "volume=centos_db_symfony"
我可以用 docker ps (-a)
列出所有容器,我可以用 docker volumes ls
列出所有卷,当我检查 volume
时,我可以看到 name
,driver
和 mountpoint
,但不是它正在使用的容器。
当我使用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
。但是我 运行 一些容器通过 docker-compose
,并且没有将名称(就像现在在 v2 中可能的那样)绑定到某些卷,所以它们在 docker volume ls
列表中显示为 sha256 ,像这样:
DRIVER VOLUME NAME
local 34009871ded5936bae81197247746b708c3ec9e9b9832b702c09736a90...etc
local centos_data
local centos_db_symfony
在这种情况下,34009871ded5
(示例)是在我将卷命名为 docker-compose
和 centos_db_symfony
之前创建的。
问题
当 docker-compose.yml
卷信息更新时,就像在这种情况下,使卷命名并更新 docker inspect <container>
中的信息,历史是否永远丢失,或者我可以找出卷是哪个容器被?使用如果是这样,是否也可以像这样恢复旧卷?
额外信息
docker-compose version 1.6.0, build d99cad6
Docker version 1.10.2, build c3959b1
截至 Docker v1.11 you can filter ps
by volume
s! Unfortunately this is not available in previous versions。
使用方法如下:
docker ps -f "volume=/var/lib/mysql"
或
docker ps -f "volume=centos_db_symfony"