Docker Swarm链接

时间:2015-09-01 10:49:34

标签: docker docker-machine docker-swarm

我想创建一个Docker Swarm Cluster,它运行一个弹性搜索实例,一个MongoDB实例和一个grails应用程序,每个都在一台单独的机器上。我正在使用Docker Machine来设置我的Docker Swarm集群

  

群-01:
    MongoDB的
    mongodb_ambassador

     

群-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

失败并显示错误:

  

来自守护程序的错误响应:无法找到满足所有要求的节点   依赖项: - volume-from = maven --link = mongo:mongo-master   --link = ES:ES-主

大使容器和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

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

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

1 个答案:

答案 0 :(得分:2)

“dock”在docker中已弃用。不要使用它。这很复杂,也不够灵活。 只需为群集模式创建一个覆盖网络。

docker network create -d overlay mynetwork

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

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

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