Docker Swarm链接

mat*_*ias 5 docker docker-swarm docker-machine

我想创建一个在各自的机器上运行弹性搜索实例,MongoDB实例和grails应用程序的Docker Swarm集群。我正在使用Docker Machine设置我的Docker Swarm集群

swarm-01:
mongodb
mongodb_ambassador

swarm-02:
elasticsearch
elasticsearch_ambassador

群-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
Run Code Online (Sandbox Code Playgroud)

失败并显示错误:

来自守护程序的错误响应:无法找到满足所有依赖关系的节点:--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
Run Code Online (Sandbox Code Playgroud)

我无法在Swarm集群上运行Grails应用程序;任何意见,将不胜感激。在单台机器上运行所有容器都可以,所以我想将mongo和es实例链接到grails应用程序时出错。

顺便说一句,我正在OS X上使用最新的Docker Toolbox安装。

Mar*_*kus 2

docker 中不推荐使用“链接”。不要使用它。比较复杂,不够灵活。只需为集群模式创建一个覆盖网络即可。

docker network create -d overlay mynetwork

在群模式下(甚至在单容器模式下),只需将每个应与另一个服务通信的服务添加到同一网络即可。

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

同一网络中的其他服务可以通过主机名访问您的 mongodb 服务mymongodb。就这样。Docker 群模式包含电池。