2016-04-06 21 views
2

キーに「。」があるため、マップリストから値を取得する際に問題が発生しました。内部。dockerからラベル値を取得する

 
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] 

を得ることができますしかし、どのように、私はあなたがjqへのパイプdocker inspectの出力を可能性

docker inspect -f {{.Config.Labels.com.docker.compose.project}} new_sc2_1 
<no value> 

答えて

13

あなたはそれの値を取得するためにindexを使用することができますキー(可読性のためにラップされています)。あなた

2

キーcom.docker.compose.projectからプロジェクト名newを得ることができます。このように考えるとコンテンツ:

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

私を取得します:

... 
     "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" 
     } 
... 

は、私はこのような個々のラベル値を抽出することができ

postgis 
+0

偉大なプロジェクトの名前を与える必要があります

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

は、確かに直接 'postgis'を取得するには? –

+1

' "'取り除くだけJQに '-r'フラグを使用することも可能です。 –

+0

thx @SantiagoLapresta @larsks。そして、私は '-r'で答えを直接更新します。 –

関連する問題