2017-01-19 31 views
0

我用羣模式,我想獲得的服務的VirtualIP在特定網絡上:6yhxlmtq69zaojpy57xdvaeiw 結果應該是:10.0.0.3/24泊塢檢查格式中檢索特定網絡的IP

[[email protected] vagrant]# docker service inspect tqy1id7zsg9s 
[ 
    { 
     "ID": "tqy1id7zsg9s7rftu8uu51g2l", 
     "Version": { 
      "Index": 72 
     }, 
     "CreatedAt": "2017-01-19T07:56:13.30985464Z", 
     "UpdatedAt": "2017-01-19T07:56:13.312923681Z", 
     "Spec": { 
      "Name": "spark-master", 
      "TaskTemplate": { 
       "ContainerSpec": { 
        "Image": "fsoppelsa/spark-master:[email protected]:7aee2f405b 546584b75bc1ec6ec3bfb5744de52788058c3455a1b43817d6af84", 
        "Labels": { 
         "spark-master": "" 
        }, 
        "Env": [ 
         "SPARK_MASTER_IP=0.0.0.0" 
        ], 
        "Mounts": [ 
         { 
          "Type": "volume", 
          "Source": "spark", 
          "Target": "/data", 
          "VolumeOptions": { 
           "DriverConfig": { 
            "Name": "local" 
           } 
          } 
         } 
        ], 
        "DNSConfig": {} 
       }, 
       "Resources": { 
        "Limits": {}, 
        "Reservations": {} 
       }, 
       "RestartPolicy": { 
        "Condition": "any", 
        "MaxAttempts": 0 
       }, 
       "Placement": { 
        "Constraints": [ 
         "node.labels.type == sparkmaster" 
        ] 
       }, 
       "Networks": [ 
        { 
         "Target": "6yhxlmtq69zaojpy57xdvaeiw" 
        } 
       ], 
       "ForceUpdate": 0 
      }, 
      "Mode": { 
       "Replicated": { 
        "Replicas": 1 
       } 
      }, 
      "UpdateConfig": { 
       "Parallelism": 1, 
       "FailureAction": "pause", 
       "MaxFailureRatio": 0 
      }, 
      "Networks": [ 
       { 
        "Target": "spark" 
       } 
      ], 
      "EndpointSpec": { 
       "Mode": "vip", 
       "Ports": [ 
        { 
         "Protocol": "tcp", 
         "TargetPort": 8080, 
         "PublishedPort": 8080, 
         "PublishMode": "ingress" 
        } 
       ] 
      } 
     }, 
     "Endpoint": { 
      "Spec": { 
       "Mode": "vip", 
       "Ports": [ 
        { 
         "Protocol": "tcp", 
         "TargetPort": 8080, 
         "PublishedPort": 8080, 
         "PublishMode": "ingress" 
        } 
       ] 
      }, 
      "Ports": [ 
       { 
        "Protocol": "tcp", 
        "TargetPort": 8080, 
        "PublishedPort": 8080, 
        "PublishMode": "ingress" 
       } 
      ], 
      "VirtualIPs": [ 
       { 
        "NetworkID": "4w6z3pc3zspunw4n6199594ve", 
        "Addr": "10.255.0.9/16" 
       }, 
       { 
        "NetworkID": "6yhxlmtq69zaojpy57xdvaeiw", 
        "Addr": "10.0.0.3/24" 
       } 
      ] 
     }, 
     "UpdateStatus": { 
      "StartedAt": "0001-01-01T00:00:00Z", 
      "CompletedAt": "0001-01-01T00:00:00Z" 
     } 
    } 
] 

使用此命令我得到:

docker service inspect spark-master -f {{.Endpoint.VirtualIPs}} 
[{4w6z3pc3zspunw4n6199594ve 10.255.0.9/16} {6yhxlmtq69zaojpy57xdvaeiw 10.0.0.3/24}] 

如何指定獲得6yhxlmtq69zaojpy57xdvaeiw網絡的VirtualIp正確的格式?

+0

看到我的答案在http://stackoverflow.com/questions/30342796/how-to-get-env-variable-when-doing-docker-inspect/30353018#30353018你應該能夠提取相關部分 – user2915097

+0

什麼給docker服務檢查spark-master -f {{(index(.Endpoint.VirtualIPs)0).4w6z3pc3zspunw4n6199594ve}} – user2915097

+0

我誤讀了,更好的嘗試'docker service inspect spark-master -f {{ (.Endpoint.VirtualIPs)1).6yhxlmtq69zaojpy57xdvaeiw}}' – user2915097

回答

0
docker service inspect spark-master -f '{{range $i, $value := .Endpoint.VirtualIPs}} {{if eq $value.NetworkID "6yhxlmtq69zaojpy57xdvaeiw" }}{{$value.Addr}}{{end}}{{end}}' 
+0

和我玩這個我可以得到更多補償lex:'''docker service inspect spark-master -f'{{$ net:=(index.Spec.TaskTemplate.Networks 0).Target}} {{range $ i,$ value:= .Endpoint.VirtualIPs}} {{if eq $ value.NetworkID $ net}} {{$ value.Addr}} {{end}} {{end}}'''' – rolele