【问题标题】:How to see which docker volume is or was being used by which container如何查看哪个容器正在使用或正在使用哪个 docker 卷
【发布时间】:2016-07-02 19:42:45
【问题描述】:

我可以用docker ps (-a) 列出所有容器,我可以用docker volumes ls 列出所有卷,当我检查volume 时,我可以看到namedrivermountpoint,但看不到它正在被使用的容器。

当我使用docker inspect <container> 时,我可以看到像这样的Mount 数据,例如:

"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-composecentos_db_symfony 之前创建的。

问题

docker-compose.yml 卷信息更新时,就像在这种情况下使卷命名并更新docker inspect <container> 中的信息时,历史会永远丢失还是我可以找出卷被哪个容器使用?如果是这样,是否也可以像这样恢复旧卷?

额外信息

docker-compose version 1.6.0, build d99cad6
Docker version 1.10.2, build c3959b1

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    Docker v1.11 开始,您可以通过volumes 过滤ps!不幸的是,这在 previous versions 中不可用。

    它的使用方法如下:

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

    docker ps -f "volume=centos_db_symfony"
    

    【讨论】:

    • 我相信这个功能是在 Docker 1.11 中添加的,所以 OP 需要升级才能获得它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2012-09-24
    • 2016-03-29
    • 2014-08-26
    相关资源
    最近更新 更多