从docker inspect获取标签值

Lar*_*Cai 13 docker jq docker-compose

由于密钥具有".",因此我无法从地图列表中获取值.内.

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]

但是如何new从密钥中获取项目名称com.docker.compose.project

docker inspect -f {{.Config.Labels.com.docker.compose.project}} new_sc2_1
<no value>
Run Code Online (Sandbox Code Playgroud)

tha*_*tah 32

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

docker inspect \
  --format '{{ index .Config.Labels "com.docker.compose.project"}}' \
  new_sc2_1
Run Code Online (Sandbox Code Playgroud)

这应该给你项目的名称

  • FWIW 我在 PowerShell 中尝试了这个,并且必须在内部双引号前面添加反引号 (`) 字符以正确转义。\\`"com.docker.compose.project\\`" (2认同)

lar*_*sks 8

你可以输出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"
        }
...
Run Code Online (Sandbox Code Playgroud)

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

docker inspect mycontainer |
jq -r '.[0].Config.Labels["com.docker.compose.project"]'
Run Code Online (Sandbox Code Playgroud)

哪个让我:

postgis
Run Code Online (Sandbox Code Playgroud)