私はすべてのネットワークの詳細を含むdocker inspect ...
からJSONスニペットを出力するようにしています。問題は、ネットワークの名前が異なることです。JQで親辞書のキーにアクセスする方法
役立つ場合はスニペットを共有している場合は、JQ Snippet。
各ネットワークの名前を明示的に指定しているため、最初の試行が有効です(ingress
およびwebnet
)。私は最終的な解決策は、フィルタのネットワーク名は言及しないが、出力にそれらを持っています。
jq '.[] | { Networks: (.NetworkSettings .Networks | {ingress: .ingress .IPAddress, webnet: .webnet .IPAddress})}'
ここに出力があります。
{
"Networks": {
"ingress": "10.255.0.5",
"webnet": "10.0.0.3"
}
}
私はいくつかの調査を行い、私が望むノードに変数を割り当てることができますが、親キーは割り当てできないことがわかりました。
jq '.[] | .NetworkSettings .Networks[] as $parent | { IPAddress: $parent .IPAddress, NetworkID: $parent .NetworkID }'
ここにはノードの詳細はありますが、親キーはありません。
{
"IPAddress": "10.255.0.5",
"NetworkID": "zznyce2va5pfggq14su51zygn"
}
{
"IPAddress": "10.0.0.3",
"NetworkID": "g66ea3npnaiwvvdy66rijt5yo"
}
次は、キーにはアクセスできましたが、詳細は表示されませんでした。
jq '.[] | .NetworkSettings .Networks | keys[] as $key | $key'
ここに出力があります。
"ingress"
"webnet"
子の詳細を出力する際に、親キー名にラベルとしてアクセスするにはどうすればよいですか?私は次のようなものが必要だと思うが、それが正しいか、どうやってそこに行くのか分からない。
($key): { IPAddress: $parent[$key] .IPAddress, NetworkID: $parent[$key] .NetworkID }
私の最終的な解決策は、詳細をいくつかのレベルですべてのネットワークの詳細と組み合わせることです。私は上記の問題を解決することができれば、私は以下の問題を解決することができると思うが、それが役に立つ場合にはそれを含める。
.[] | {Name: .Name, Id: .Id, Path: .Path, Networks: (.NetworkSettings .Networks | {ingress: { IPAddress: .ingress .IPAddress, NetworkID: .ingress .NetworkID },
webnet: {IPAddress: .webnet .IPAddress, NetworkID: .webnet .NetworkID}})}
ここに出力があります。
{
"Name": "/nginx.1.attiwcma8h39wclpsncp608tk",
"Id": "f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a",
"Path": "nginx",
"Networks": {
"ingress": {
"IPAddress": "10.255.0.5",
"NetworkID": "zznyce2va5pfggq14su51zygn"
},
"webnet": {
"IPAddress": "10.0.0.3",
"NetworkID": "g66ea3npnaiwvvdy66rijt5yo"
}
}
}
ありがとう、ウェス。
スニペットにアクセスできない場合の入力です。ここで
[
{
"Id": "f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a",
"Created": "2017-08-08T14:17:47.911028584Z",
"Path": "nginx",
"Args": [
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 18628,
"ExitCode": 0,
"Error": "",
"StartedAt": "2017-08-08T14:17:48.299360684Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:b8efb18f159bd948486f18bd8940b56fd2298b438229f5bd2bcf4cedcf037448",
"ResolvConfPath": "/var/lib/docker/containers/f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a/hostname",
"HostsPath": "/var/lib/docker/containers/f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a/hosts",
"LogPath": "/var/lib/docker/containers/f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a/f2ee9caae862326a7a62304659121c506f8afb9d74080475702da3595576937a-json.log",
"Name": "/nginx.1.attiwcma8h39wclpsncp608tk",
"RestartCount": 0,
"Driver": "overlay",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": null,
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay/f7e30463365de46a74cbdf5835ad6d5ab6f390a4d53fb42c25b6a43a59cf6910/root",
"MergedDir": "/var/lib/docker/overlay/6a3ac9fc31cda9ace1b7b02935cb2467be7a97984fe33f01a73706a8eae07968/merged",
"UpperDir": "/var/lib/docker/overlay/6a3ac9fc31cda9ace1b7b02935cb2467be7a97984fe33f01a73706a8eae07968/upper",
"WorkDir": "/var/lib/docker/overlay/6a3ac9fc31cda9ace1b7b02935cb2467be7a97984fe33f01a73706a8eae07968/work"
},
"Name": "overlay"
},
"Mounts": [],
"Config": {
"Hostname": "f2ee9caae862",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.13.3-1~stretch",
"NJS_VERSION=1.13.3.0.1.11-1~stretch"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"ArgsEscaped": true,
"Image": "nginx:[email protected]:788fa27763db6d69ad3444e8ba72f947df9e7e163bad7c1f5614f8fd27a311c3",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"com.docker.swarm.node.id": "3hq6jrjhs4ndk5lffpg52xj13",
"com.docker.swarm.service.id": "w787z4alcw4t3p0nesgwhj1yn",
"com.docker.swarm.service.name": "nginx",
"com.docker.swarm.task": "",
"com.docker.swarm.task.id": "attiwcma8h39wclpsncp608tk",
"com.docker.swarm.task.name": "nginx.1.attiwcma8h39wclpsncp608tk"
},
"StopSignal": "SIGTERM"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "66e098ef6e1bea3b2f66dcc7460eab9fc23436cb39836918a46e1d38692a55cb",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": null
},
"SandboxKey": "/var/run/docker/netns/66e098ef6e1b",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"ingress": {
"IPAMConfig": {
"IPv4Address": "10.255.0.5"
},
"Links": null,
"Aliases": [
"f2ee9caae862"
],
"NetworkID": "zznyce2va5pfggq14su51zygn",
"EndpointID": "09b287a8d82e85d0790a8ea8634e97844481cb478ded89f6ac1dfda7e3c31f76",
"Gateway": "",
"IPAddress": "10.255.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:0a:ff:00:05",
"DriverOpts": null
},
"webnet": {
"IPAMConfig": {
"IPv4Address": "10.0.0.3"
},
"Links": null,
"Aliases": [
"f2ee9caae862"
],
"NetworkID": "g66ea3npnaiwvvdy66rijt5yo",
"EndpointID": "46b7ef9ba2d82cf56f34ade3a80a094b5f92f05d5e9051dab0542e2992298bb2",
"Gateway": "",
"IPAddress": "10.0.0.3",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:0a:00:00:03",
"DriverOpts": null
}
}
}
}
]
ありがとう。それは私が探している結果を私に与えますが、それを消化するのに私はしばらく時間がかかります。 – Wes