如何为 docker 事件输出解析包含带有 --format 的点的属性?
How to parse attributes which contains dots with --format for docker events output?
我正在尝试解析 docker events
输出并使用 --format
参数对其进行格式化。
它适用于基本属性,但是我无法使用包含点的属性,例如来自 Docker Swarm 的属性。
这是一个例子:
$ docker events --since=5m --until=1s --filter type=container --format '{{ json . }}'
{
"status": "oom",
"id": "23916078dbf062b02edf36ae1de3cdd6d439d11cad29acc72daffcc1ac8981b9",
"from": "(redacted)",
"Type": "container",
"Action": "oom",
"Actor": {
"ID": "23916078dbf062b02edf36ae1de3cdd6d439d11cad29acc72daffcc1ac8981b9",
"Attributes": {
"com.docker.stack.namespace": "beta-client",
"com.docker.swarm.node.id": "woxyp548c8yat5nizwzmar6ia",
"com.docker.swarm.service.id": "5j72edfv4sda554gqu0paaxu2",
"com.docker.swarm.service.name": "beta-client_task",
"com.docker.swarm.task": "",
"com.docker.swarm.task.id": "ib57fy6em8hz1cfbrua518r2i",
"com.docker.swarm.task.name": "beta-client_task.1.ib57fy6em8hz1cfbrua518r2i",
"image": "(redacted)",
"name": "beta-client_task.1.ib57fy6em8hz1cfbrua518r2i"
}
},
"scope": "local",
"time": 1559032467,
"timeNano": 1559032467083181300
}
我想在 Actor.Attributes
中获取 com.docker.stack.namespace
属性(不使用像 jq
这样的外部工具)。
但是属性名称中的点阻止我访问该属性,并且引用它似乎不起作用:
$ docker events --since=5m --until=1s --filter type=container --format '{{ .Actor.Attributes."com.docker.stack.namespace" }}'
Error parsing format: template: :1: bad character U+0022 '"'
感谢您的帮助!
如果参数名中也有.
,则不能使用.
。尝试 index
,如下所示:
--format '{{ index .Actor.Attributes "com.docker.stack.namespace" }}'
我正在尝试解析 docker events
输出并使用 --format
参数对其进行格式化。
它适用于基本属性,但是我无法使用包含点的属性,例如来自 Docker Swarm 的属性。
这是一个例子:
$ docker events --since=5m --until=1s --filter type=container --format '{{ json . }}'
{
"status": "oom",
"id": "23916078dbf062b02edf36ae1de3cdd6d439d11cad29acc72daffcc1ac8981b9",
"from": "(redacted)",
"Type": "container",
"Action": "oom",
"Actor": {
"ID": "23916078dbf062b02edf36ae1de3cdd6d439d11cad29acc72daffcc1ac8981b9",
"Attributes": {
"com.docker.stack.namespace": "beta-client",
"com.docker.swarm.node.id": "woxyp548c8yat5nizwzmar6ia",
"com.docker.swarm.service.id": "5j72edfv4sda554gqu0paaxu2",
"com.docker.swarm.service.name": "beta-client_task",
"com.docker.swarm.task": "",
"com.docker.swarm.task.id": "ib57fy6em8hz1cfbrua518r2i",
"com.docker.swarm.task.name": "beta-client_task.1.ib57fy6em8hz1cfbrua518r2i",
"image": "(redacted)",
"name": "beta-client_task.1.ib57fy6em8hz1cfbrua518r2i"
}
},
"scope": "local",
"time": 1559032467,
"timeNano": 1559032467083181300
}
我想在 Actor.Attributes
中获取 com.docker.stack.namespace
属性(不使用像 jq
这样的外部工具)。
但是属性名称中的点阻止我访问该属性,并且引用它似乎不起作用:
$ docker events --since=5m --until=1s --filter type=container --format '{{ .Actor.Attributes."com.docker.stack.namespace" }}'
Error parsing format: template: :1: bad character U+0022 '"'
感谢您的帮助!
如果参数名中也有.
,则不能使用.
。尝试 index
,如下所示:
--format '{{ index .Actor.Attributes "com.docker.stack.namespace" }}'