首页 > 解决方案 > Docker 放置约束测试空白/任何标签

问题描述

将标签添加到 docker 节点是合法且有记录的语法:

docker node update node_x --label-add "label"

这将添加一个标签,在查询时将显示为空字符串:

$ docker node inspect docker-desktop --format '{{json .Spec.Labels}}'
{"label":""}

但是,似乎没有有效的方法来制作可以由该标签满足的放置​​约束。

对这个问题的不同看法是需要检查标签是否为非空白值。

例如,我可能想给两个节点一个标签:

docker node update node_x --label-add "fruit=apple"
docker node update node_y --label-add "fruit=orange"
version: "3.9"
services:
  test:
    image: alpine
    deploy:
      placement:
        constraints:
        - node.labels.label # == or != expected
        - node.labels.label=="" # "" unexpected / '' unexpected.
        - node.labels.fruit!="" # "" unexpected / '' unexpected.

那么,我错过了什么吗?是否有某种方法可以检查是否设置了标签,而不检查特定值。有没有办法检查设置的标签,但为空白值?

标签: dockerdocker-compose

解决方案


推荐阅读