Docker swarm не распространяет контейнер в кластере

#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. Я думаю, вы это уже решили, но на всякий случай.