Разверните docker-compose для роя

У меня есть файл docker-compose.yml, и если я запустил docker swarm init, я могу:

$ docker stack deploy --compose-file=docker-compose.yml example

И все работает нормально.

Я так понимаю, что я не могу использовать docker stack deploy для развертывания в рое, в который не входит мой хост.

Итак, я запустил несколько экземпляров Virtualbox:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
manager   -        virtualbox   Running   tcp://192.168.99.102:2376           v17.05.0-ce
worker1   -        virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce
worker2   -        virtualbox   Running   tcp://192.168.99.101:2376           v17.05.0-ce

Соединил рабочих с менеджером.

$ docker-machine ssh worker1 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker1) --advertise-addr $(docker-machine ip worker1) $(docker-machine ip manager)"
$ docker-machine ssh worker2 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker2) --advertise-addr $(docker-machine ip worker2) $(docker-machine ip manager)"

Мне было интересно, может ли мой хост присоединиться к рой, запустить развертывание стека и покинуть его?

Попытка присоединиться к нему не удалась.

Error response from daemon: can't initialize raft node: rpc error: code = 2 desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = 4 desc = context deadline exceeded

Итак, мой вопрос: как я могу развернуть свой стек docker-compose в рое, частью которого я не являюсь? Действительно ли копирование файла и запуск стека - это способ сделать это?


person rich    schedule 27.06.2017    source источник


Ответы (2)


Кажется, это лучший ответ, который у меня есть:

$ docker-machine scp docker-compose.yml manager:~/
$ docker-machine ssh manager docker stack deploy --compose-file=docker-compose.yml example
person rich    schedule 27.06.2017

Другой вариант, не требующий копирования docker-compose.yml в менеджер, - это отправить файл docker-compose.yml менеджеру на stdin:

docker-machine ssh manager docker stack deploy -c - example < docker-compose.yml

Я привожу несколько примеров этого здесь: Как я могу удаленно подключиться к docker swarm?

person nachbar    schedule 21.11.2018