Я пытаюсь проанализировать 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
}
Я хотел бы получить атрибут com.docker.stack.namespace
в Actor.Attributes
(без использования внешнего инструмента, такого как 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 '"'
Спасибо за вашу помощь!