只查看`docker service ps xxx`结果中的ERROR列?

zqdjd7g9  于 2023-06-29  发布在  Docker
关注(0)|答案(2)|浏览(123)

我知道--format选项的使用,但不知何故,它不适用于某些字段(适用于ID字段),也许对象图是隐藏在这里的东西。
以下是仅运行docker service ps my_service_id时显示的所有列:
ID -名称-映像-节点-所需状态-当前状态-错误-端口
现在,我只想使用以下命令显示ERROR列,以便于阅读:

docker service ps --format '{{.ERROR}}' my_service_id

但是,它不工作并打印以下错误:
模板解析错误:模板::1:3:执行“”at<.ERROR>:无法计算类型 *task.taskContext中的字段ERROR

pcww981p

pcww981p1#

我还不能将大写字母与--format标志组合使用,但使用例如。'{{ .Status }}'。它看起来是区分大小写的,并且呈现的表在每一列上总是有大写字母,可能是在客户端完成的(Docker CLI)。
当发出不同的子命令时,返回(和呈现)的数据类型将在其中导出字段,在Golang中,这意味着字段名称以大写字母开头。但情况并非总是如此,例如。当使用缩略语。我可能是错的,因为我们在这里使用的是Golang templates
下面的命令是否输出了您想要的结果?

docker service ps --format '{{ .Error }}' my_service_id
smdncfj3

smdncfj32#

字段在格式输出中区分大小写。为了确定正确的名称,我通常将输出格式化为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:

相关问题