Docker Swarm 链接

5
我想创建一个Docker Swarm集群,其中运行着一个弹性搜索实例、一个MongoDB实例和一个Grails应用程序,每个在单独的机器上。我正在使用Docker Machine来设置我的Docker Swarm集群。
以下是我的设置的最后一步,使用以下命令运行实际的Grails应用程序:

swarm-01:
mongodb
mongodb_ambassador

swarm-02:
elasticsearch
elasticsearch_ambassador

swarm-03:
mongodb_ambassador
elasticsearch_ambassador
grails

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

失败并出现错误:

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

我无法在 Swarm 集群上运行 Grails 应用程序,希望能得到一些建议。将所有容器都运行在单台机器上是可以的,所以我猜测我在将 mongo 和 es 实例连接到 Grails 应用程序时可能犯了错误。

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


使用docker ps -a命令查找已崩溃的Grails应用程序容器,然后检查其日志docker logs grails_app_container_id - bachr
一年后,这个问题还没有解决吗? - Etienne Gautier
1个回答

2
“linking”在Docker中已经被弃用。不要使用它,因为它很复杂,并且不够灵活。只需为Swarm模式创建一个覆盖网络即可。
使用以下命令创建覆盖网络: docker network create -d overlay mynetwork 在Swarm模式下(即使是单个容器模式),只需将需要与其他服务通信的每个服务添加到相同的网络中即可。 docker service create --network mynetwork --name mymongodb ... 同一网络中的其他服务只需通过主机名即可访问您的mongodb服务。这就是全部。 Docker Swarm模式自带电池。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接