从 docker 检查中获取标签值

get label value from docker inspect

由于键有“.”,我无法从地图列表中获取值。里面。

docker inspect jenkins
  Config: {
  ..
      "Labels": {
            "com.docker.compose.config-hash": "85bcf1e0bcd708120185a303e2a8d8e65543c1ec77ec0c6762fc057dc10320aa",
            "com.docker.compose.container-number": "1",
            "com.docker.compose.oneoff": "False",
            "com.docker.compose.project": "new",
            "com.docker.compose.service": "sc2",
            "com.docker.compose.version": "1.5.2"
        }
    }
}

我可以得到地图列表

docker inspect -f {{.Config.Labels}} new_sc2_1
map[com.docker.compose.config-hash:85bcf1e0bcd708120185a303e2a8d8e65543c1ec77ec0c6762fc057dc10320aa com.docker.compose.container-number:1 com.docker.compose.oneoff:False com.docker.compose.project:new com.docker.compose.service:sc2 com.docker.compose.version:1.5.2]

但是我如何从键 com.docker.compose.project

中获取项目名称 new
docker inspect -f {{.Config.Labels.com.docker.compose.project}} new_sc2_1
<no value>

您可以将 docker inspect 的输出通过管道传输到 jq。给出这样的内容:

...
        "Labels": {
            "com.docker.compose.config-hash": "a804d541a5828f4aaf17df862b650e58ac5bae77b70ff5ebdb2f0f3682326954",
            "com.docker.compose.container-number": "1",
            "com.docker.compose.oneoff": "False",
            "com.docker.compose.project": "postgis",
            "com.docker.compose.service": "postgis",
            "com.docker.compose.version": "1.7.0rc1"
        }
...

我可以像这样提取单个标签值:

docker inspect mycontainer |
jq -r '.[0].Config.Labels["com.docker.compose.project"]'

这让我:

postgis

您可以使用 index 获取该键的值(为便于阅读而包装);

docker inspect \
  --format '{{ index .Config.Labels "com.docker.compose.project"}}' \
  new_sc2_1

那应该给你项目的名字