Как использовать Docker Compose с устаревшим Docker Swarm

Я пытаюсь развернуть свое приложение с Compose и Swarm. В настоящее время я не хочу обновлять свой docker-compose.yaml с v2 до v3. Так что я могу сделать это только с standalone(legacy) swarm, а не с docker swarm mode на основе ответа Стоунмана И официальные документы Swarm.

Следуя официальной инструкции, я успешно настроил рой кластер. Я запустил docker -H :4000 info на узле swarm manager, чтобы проверить состояние кластера роя, как показано ниже. В этом кластере есть еще два рабочих узла. Затем я хочу create наложить сеть на этот кластер и указать эту сеть в docker-compose.yaml. Но когда я запустил docker -H :4000 network create -d overlay test на узле диспетчера роя для создания сети, он сообщил об ошибке: Error response from daemon: Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

Итак, как я могу создать сеть с роевым кластером (без docker-machine и virtual box)? В настоящее время диспетчер роя и рабочие узлы работают как контейнеры докеров. введите описание изображения здесь


person Chalex    schedule 18.04.2018    source источник
comment
Чалекс, ты прочитал ответ @Bret. Swarm classic - ваше требование?   -  person Jinna Balu    schedule 24.04.2018
comment
Джинна, я перешел в режим Docker Swarm и решил свою проблему. Я просто хотел узнать, как настроить оверлейную сеть с классическим Docker Swarm. Думал будет какая-нибудь подробная инструкция.   -  person Chalex    schedule 25.04.2018


Ответы (2)


Вы сначала настраивали оверлейную сеть с собственным сервером etcd? https://docs.docker.com/network/overlay-standalone.swarm/ < / а>

«Классический» Swarm устарел и заменен режимом docker swarm. В классике все сложнее, включая настройку оверлея. Я бы не рекомендовал использовать его для чего-то нового, если у вас нет жестких требований.

person Bret Fisher    schedule 20.04.2018
comment
да, я пытался настроить оверлейную сеть с помощью классического Swarm. Но мне это не удалось. Затем я перешел в режим Docker Swarm Mode и решил свою проблему. Так можно ли настроить оверлейную сеть с помощью Classic Swarm? Всегда ли это непонятно и сложно настроить оверлейную сеть с помощью Classic Swarm? - person Chalex; 25.04.2018
comment
Да, потому что Classic Swarm просуществовал всего 1,5 года, прежде чем был заменен на Swarm Mode. После этого он не получил никаких дополнительных функций или любви сообщества, потому что Swarm Mode решил большую часть той же проблемы с гораздо меньшими усилиями. - person Bret Fisher; 25.04.2018
comment
Ok. Понятно. Спасибо за ваш ответ. - person Chalex; 25.04.2018

В режиме роя вы запускаете все команды на хосте менеджера роя. То же самое с созданием сетей, секретов и т. Д. Вы можете узнать машину диспетчера докеров: $ docker node ls Хост диспетчера помечен СТАТУСОМ МЕНЕДЖЕРА: Лидер. После создания сети в диспетчере все узлы в этом рое должны видеть сеть.

«Я запустил docker -H: 4000 network create -d overlay test» Лучше объявить сеть внутри файла стека yml для более быстрого и легкого развертывания. вы можете создать сеть и выставить свои порты в файле yml, нет необходимости создавать их вручную каждый раз, когда вы запускаете стек. Добавьте следующий блок под службу докеров:

services:
...
#Network
   networks:
    - network-name-here
...
#Exposed ports:
  ports:
    - target: 4000 
      published: 4000

В конце файла yml добавьте следующий блок для объявления сети, чтобы он создавался каждый раз, когда вы запускаете $ docker stack deploy:

networks:
  network-name-here:
   driver: overlay 
person Yasser    schedule 18.04.2018
comment
Спасибо за ваш ответ. Но на самом деле я не использовал swarm mode. Я установил кластер роя с classic swarm, он же standalone или legacy рой. По swarm mode проблем не возникло. - person Chalex; 18.04.2018