如何通过标签过滤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正在查看引擎标签,而不是节点标签。
我们应该回到节点标签过滤而不是引擎过滤