我正在运行docker 1.12.1并且无法按标签进行节点过滤。 我首先添加“测试”标签:
$ 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
答案 0 :(得分:2)
简单回答:这不会像您认为的那样有效,但看起来他们可能会修复它。
混淆来自于我们有两套标签:
节点标签(您通过泊坞窗节点更新设置的标签) 引擎标签(您在启动docker守护程序时设置的标签 --label)docker node ls中的标签过滤正在查看引擎标签而不是节点标签。
我们应该恢复到节点标签过滤而不是引擎 过滤
答案 1 :(得分:1)
我相信你已经看过了(基于收到的赞照),这是一个known issue (#27231)的码头群。
答案 2 :(得分:0)