Я новичок в режиме роя Docker, изучаю руководство по адресу https://docs.docker.com/engine/swarm/swarm-tutorial и заметил, когда наткнулся на главу о сливе узлов (https://docs.docker.com/engine/swarm/swarm-tutorial/drain-node/), что обоим моим рабочим узлам было присвоено одно и то же имя, moby
:
matthew@bunty:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3vkklry19mesmsjrgltj53kap moby Ready Active
biur2a68tze2oykta9klklkeq moby Ready Active
daf8npyma8r0dnmcxu6j491jq * bunty Ready Active Leader
Это приводит к сбою команды слива:
matthew@bunty:~$ docker node update --availability drain moby
Error response from daemon: node moby is ambiguous (2 matches found)
Если я использую идентификатор, команда работает.
Я видел Docker swarm: как вручную установить имена узлов? , но мое окружение отличается. Мой управляющий узел — это ящик Ubuntu с именем хоста bunty
, а мои рабочие — это ящик Windows с именем хоста VADER
и мой MacBook Pro с именем хоста newt
. На всех установлена последняя версия Docker 1.12.x.
Я ожидал, что имена узлов будут bunty
, VADER
и newt
соответственно, но вместо этого я получаю bunty
для менеджера и moby
для обоих рабочих.
Что дает? Похоже, что в команде docker swarm join
нет опции, позволяющей мне вручную назвать узел, и у каждого рабочего процесса есть уникальное имя хоста.