#docker #docker-compose #docker-swarm
#docker #docker-compose #docker-swarm
Вопрос:
У меня есть два сервера для использования в Docker Cluster Swarm (только для тестирования), один из которых является менеджером, а другой — рабочим, но при выполнении команды docker stack deploy --compose-file docker-compose.yml teste2
все службы запускаются в диспетчере, и рабочий не получает контейнеры для запуска, по какой-то причине Swarm не добивается распространения служб в кластере и запуска всех на сервере manager.
Будет ли причиной проблемы мой docker-compose.yml или это может быть проблема с сетью?
Вот некоторые настройки:
- Серверы CentOS 7, версия Docker 18.09.4;
- Я выполнил команды
systemctl stop firewalld amp;amp; systemctl disable firewalld
для отключения брандмауэра; - Я выполнил команду
docker swarm join --token ...
в рабочем; -
Результат
docker node ls
:ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 993dko0vu6vlxjc0pyecrjeh0 * name.server.manager Ready Active Leader 18.09.4 2fn36s94wjnu3nei75ymeuitr name.server.worker Ready Active 18.09.4
-
Файл docker-compose.yml:
version: "3" services: web: image: testehello deploy: replicas: 5 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure # placement: # constraints: [node.role == worker] ports: - 4000:80 networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - 8080:8080 stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: webnet:
-
Я выполнил команду
docker stack deploy --compose-file docker-compose.yml teste2
В docker-compose.yml я прокомментировал параметры размещения и ограничения, потому что они не работали и не запускали контейнеры на серверах, без этого контейнеры запускаются в диспетчере. Через визуализатор все отображаются в диспетчере.
Комментарии:
1. Попробуйте добавить «режим: реплицированный» в раздел deploy
2. Я добавил
mode: replicated
, но не распространил. Можно ли попробовать что-нибудь еще?3. Должно сработать, я использую синтаксис 3.2, приведу пример в ответе.
Ответ №1:
Я думаю, что изображения недоступны с рабочего узла, поэтому они не получают контейнеры, попробуйте использовать это руководство от dockerhttps://docs.docker.com/engine/swarm/stack-deploy /
P.S. Я думаю, вы это уже решили, но на всякий случай.