在 Docker 中,有时需要知道一个 Volume 被哪些容器使用。下面提供一个简单的一行命令,可以快速查到关联容器。

查找占用空间大的卷

根目录执行

du -Sh | sort -rh | head -n 20

命令示例

假设卷名是 mydata

docker ps -a --format '{{.ID}} {{.Names}}' | while read cid cname; do
    if docker inspect $cid | grep -q "\"Name\": \"mydata\""; then
        echo "容器 $cname ($cid) 正在使用该卷"
    fi
done

使用方法

  1. 将命令复制到终端执行。
  2. mydata 替换为你要查询的卷名。
  3. 输出示例:
容器 webapp (b3f1d2a9e2a1) 正在使用该卷
容器 db (e9f2a7d6b1c4) 正在使用该卷

命令说明

  1. docker ps -a --format '{{.ID}} {{.Names}}'

    • 列出所有容器的 ID 和名称。
  2. while read cid cname; do ... done

    • 遍历每个容器,逐个检查是否挂载指定卷。
  3. docker inspect $cid | grep -q "\"Name\": \"mydata\""

    • 在容器挂载信息中搜索是否使用了目标卷。
  4. echo "容器 $cname ($cid) 正在使用该卷"

    • 找到后输出容器名称和 ID,快速定位。