如何通过标签过滤docker群节点?

我正在运行docker1.12.1,不能通过标签获得节点过滤工作。 我首先添加“testing”标签:

$ docker node update --label-add test mr-host mr-host 

当我尝试过滤它时,没有显示节点:

 $ docker node ls --filter label=test ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 

通过名称等其他标准筛选工作正常:

 $ docker node ls --filter name=mr-host ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1c48m4msidbqwx7vj0lwib8ef * mr-host Ready Active Leader 

检查节点时显示标签:

 $ docker node inspect mr-host [ { "ID": "1c48m4msidbqwx7vj0lwib8ef", "Version": { "Index": 4865874 }, "CreatedAt": "2016-10-12T15:20:10.463286132Z", "UpdatedAt": "2016-10-13T16:29:03.113522485Z", "Spec": { "Labels": { "test": "" }, "Role": "manager", "Availability": "active" }, "Description": { "Hostname": "mr-host", "Platform": { "Architecture": "x86_64", "OS": "linux" }, "Resources": { "NanoCPUs": 10000000000, "MemoryBytes": 67548012544 }, "Engine": { "EngineVersion": "1.12.1", "Plugins": [ { "Type": "Network", "Name": "bridge" }, { "Type": "Network", "Name": "host" }, { "Type": "Network", "Name": "null" }, { "Type": "Network", "Name": "overlay" }, { "Type": "Volume", "Name": "local" } ] } }, "Status": { "State": "ready" }, "ManagerStatus": { "Leader": true, "Reachability": "reachable", "Addr": "192.168.0.118:2377" } } ] 

我究竟做错了什么? 我很确定我已经正确地按照这里的文档: https : //docs.docker.com/engine/reference/commandline/node_ls/#/id

正如我相信你已经看到(根据收到的大拇指),这是一个已知的问题(#27231)与docker群。

简单的答案:这不像你想象的那样工作,但看起来他们可能会修复它。

从Github的问题引用:

混淆来自于我们有两套标签:

节点标签(通过docker节点更新设置的标签)引擎标签(当您使用–label启动docker守护程序时设置的标签)docker节点中的标签过滤ls正在查看引擎标签,而不是节点标签。

我们应该回到节点标签过滤而不是引擎过滤