我知道--format
选项的使用,但不知何故它不适用于某些字段(适用于ID
字段(,也许对象图隐藏在这里。
以下是仅运行docker service ps my_service_id
时显示的所有列:
当前状态 - 错误 - 端口
现在,我只想使用以下命令显示 ERROR 列以便于阅读:
docker service ps --format '{{.ERROR}}' my_service_id
但是,它不起作用并打印以下错误:
模板解析错误:模板::1:3:在<处执行>:无法评估类型 *task.taskContext 中的字段错误处执行>
我无法将大写字母与--format
标志结合使用,但有效的是使用 例如'{{ .Status }}'
.它似乎区分大小写,呈现的表在每列上始终具有大写字母,可能在客户端 (Docker CLI( 上完成。
发出不同子命令时返回(和呈现(的数据类型将包含导出的字段,在 Golang 中,这意味着字段名称以大写字母开头。但情况并非总是如此,例如,使用首字母缩略词时。鉴于我们在这里使用 Golang 模板,我可能错了。
以下命令是否输出您想要的内容?
docker service ps --format '{{ .Error }}' my_service_id
字段在格式输出中区分大小写。为了确定正确的名称,我通常将输出格式化为 json,并用jq
使其漂亮:
$ docker service ps --format '{{ json . }}' traefik_traefik | jq .
{
"CurrentState": "Running 15 hours ago",
"DesiredState": "Running",
"Error": "",
"ID": "lrmsc96zdfei",
"Image": "localhost:5000/bmitch/traefik:1.7",
"Name": "traefik_traefik.1",
"Node": "bmitch",
"Ports": ""
}
{
"CurrentState": "Failed 15 hours ago",
"DesiredState": "Shutdown",
"Error": ""task: non-zero exit (255)"",
"ID": "y6ocu5s2k7l2",
"Image": "localhost:5000/bmitch/traefik:1.7",
"Name": "traefik_traefik.1",
"Node": "bmitch",
"Ports": ""
}
{
"CurrentState": "Complete 2 weeks ago",
"DesiredState": "Shutdown",
"Error": "",
"ID": "nt8tsd7jfsgl",
"Image": "localhost:5000/bmitch/traefik:1.7",
"Name": "traefik_traefik.1",
"Node": "bmitch",
"Ports": ""
}
从那里您可以选择所需的字段:
$ docker service ps --format '{{ .ID }}: {{ .Error }}' traefik_traefik
lrmsc96zdfei:
y6ocu5s2k7l2: "task: non-zero exit (255)"
nt8tsd7jfsgl: