代码之家  ›  专栏  ›  技术社区  ›  Matthew

如何识别哪个容器拥有哪个覆盖目录?

  •  0
  • Matthew  · 技术社区  · 7 年前

    我的 /var/lib/docker/overlay 目录包含我的容器的数据,但目录名都是散列的。如何确定哪个容器拥有哪个覆盖?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Matthew    7 年前

    你可以使用 jq 像这样:

     docker inspect $(docker ps -qa) |  jq -r 'map([.Name, .GraphDriver.Data.MergedDir]) | .[] | "\(.[0])\t\(.[1])"'
    

    给出:

    /traefik_traefik_1      /var/lib/docker/overlay/58df937e805ec0496bd09686394db421c129e975f67180e737d5af51751af49c/merged
    /gitlab-runner  /var/lib/docker/overlay/4e5b06f4ee09c60e2dad3a0ce87352cead086eb8229775f6839a477b46dce565/merged
    /rancher-agent  /var/lib/docker/overlay/6026bb65dd9a83c2088a05cff005a1dd824494222445bab46b7329dc331465aa/merged
    

    说明:

    docker inspect $(docker ps -qa)
    

    显示完整的Docker详细信息。

    jq -r
    

    解析json并输出常规字符串:

    map([.Name, .GraphDriver.Data.MergedDir])
    

    对于原始数组中的每个元素,查找 Name 以及覆盖层 MergedDir

    "\(.[0])\t\(.[1])"
    

    输出数组的前两个元素。