如何列出 docker 个带标签的群节点

How to list docker swarm nodes with labels

如何轻松打印所有可用的 docker swarm 节点及其标签?


等节点添加了标签 $ docker node update --label-add type=one my_node_name
默认列表节点 docker node ls 不显示过滤器。

此外,我可以列出检查每个节点的标签,例如:

$ docker inspect my_node_name | grep type 
"type": "one"

---编辑--

类似的问题How do I filter docker swarm nodes by label?是关于过滤我的是关于列表

你可以运行这样的东西:

docker node ls -q | xargs docker node inspect \
  -f '{{ .ID }} [{{ .Description.Hostname }}]: {{ .Spec.Labels }}'

您可以调整它以使用一个范围来进行更漂亮的格式化,而不是打印默认地图:

docker node ls -q | xargs docker node inspect \
  -f '{{ .ID }} [{{ .Description.Hostname }}]: {{ range $k, $v := .Spec.Labels }}{{ $k }}={{ $v }} {{end}}'

随时将格式化输出更新为您需要的字段。

PowerShell 核心版本:

docker node ls -q | `
  ForEach-Object { `
    docker node inspect $_ --format '{{ json . }}' | `
    ConvertFrom-Json -Depth 99 } | `
  Select-Object { $_.Description.Hostname }, { $_.Spec.Labels }