2016-10-13 3 views
3

Я запускаю докер 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

ответ

1

Как я считаю, вы видели (на основе полученных им больших пальцев) это known issue (#27231) с докером.

1

Простой ответ: это не работает, как вы думаете, это будет, но похоже, что они могут это исправить.

Цитируя the Github issue:

Путаница происходит из-за того, что у нас есть два набора меток:

Узел этикетки (те, вы были настройки через обновление Docker узла) этикетки двигателя (те, которые вы установили при запуске демона-докера с помощью --label). Фильтрация ярлыков в докере-узле ls рассматривает метки механизмов, а не метки узлов.

Вероятно, мы должны вернуться к фильтрации этикетки узла, а не двигатель фильтрации

Смежные вопросы