Я часто сталкиваюсь с этой проблемой, когда есть несоответствие между метками узла, определенными в файле компоновки, и метками, определенными в фактическом узле, либо потому, что я установил неправильную метку (например, опечатка), либо просто забыл пометить узлы вообще.
Чтобы пометить узлы:
1) Для каждого целевого узла выполните:
docker-machine ssh <manager_node_name> 'docker node update --label-add <label_name>=<label_value> <target_node_name>'
2) Убедитесь, что они соответствуют тем, которые определены в файле компоновки.
3) перезапустить службу докеров в узле менеджера
например:
составить файл:
dummycontainer:
image: group/dummyimage
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.labels.dummy_label == dummy]
restart_policy:
condition: on-failure
предполагая, что я хочу развернуть эту реплику на узле с именем dummy_node:
docker-machine ssh manager_node 'docker node update --label-add dummy_label=dummy dummy_node'
и перезапустите докер в узле менеджера.
Наконец, если вы развертываете, вы должны ожидать, что dummycontainer будет работать в dummy_node, предполагая, что метка была правильно установлена на обоих шагах. В противном случае ожидается увидеть ошибку, которую вы получаете.
С наилучшими пожеланиями
person
João Matos
schedule
11.12.2017