2015-09-01 6 views
4

Я хочу создать Docker Swarm Cluster, работающий на эластичном экземпляре поиска, экземпляре MongoDB и приложении grails, каждый на отдельной машине. Я использую Docker Machine, чтобы настроить свой Docker Swarm СкоплениеDocker Swarm Linking

swarm-01:
mongodb
mongodb_ambassador

swarm-02:
elasticsearch
elasticsearch_ambassador

swarm-03:
mongodb_ambassador
elasticsearch_ambassador
grails

Последний этап моей установки, запустив фактическое Grails приложение, используя следующую команду:

docker run -p 8080:8080 -d --name grails-master --volumes-from maven --link mongo:mongo-master --link es:es-master my-grails-image 

с ошибкой:

Error response from daemon: Unable to find a node fulfilling all dependencies: --volumes-from=maven --link=mongo:mongo-master --link=es:es-master

Контейнеры посла и контейнер данных maven работают на одном узле.

CONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS               NAMES 
74677dad09a7  svendowideit/ambassador "/bin/sh -c 'env | gr" 18 minutes ago  Up 18 minutes  9200/tcp, 9300/tcp            swarm-03/es 
98b38c4fc575  svendowideit/ambassador "/bin/sh -c 'env | gr" 18 minutes ago  Up 18 minutes  27107/tcp              swarm-03/mongo 
7d45fb82eacc  debian:jessie    "/bin/bash"    20 minutes ago                       swarm-03/maven 

Я не могу получить приложение Grails, работающее на кластере Swarm; Любой совет будет принят во внимание. Запуск всех контейнеров на одной машине работает, поэтому, я думаю, я делаю ошибку, связывающую экземпляры mongo и es с приложением grails.

Btw Я использую последнюю установку Docker Toolbox на OS X.

+0

Ищите контейнер приложений crashed grails с 'docker ps -a', затем проверьте его журналы журналов docker grails_app_container_id'. – bachr

+0

Спустя год этот вопрос еще не решен? –

ответ

1

"Объединение" является устаревшим в докер. Не используйте его. Это сложно и недостаточно гибко. Просто создайте оверлейную сеть для режима роя.

docker network create -d overlay mynetwork

В режиме роя (даже в режиме одного контейнера), просто добавьте все услуги, которые должны взаимодействовать с другой службы в одной и той же сети.

docker service create --network mynetwork --name mymongodb ...

Другие услуги в одной и той же сети может достигать ваш сервис MongoDB только через имя хоста mymongodb. Это все. В режиме рояля Docker включен аккумулятор.

 Смежные вопросы

  • Нет связанных вопросов^_^