首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问另一个堆栈中的服务?

如何访问另一个堆栈中的服务?
EN

Server Fault用户
提问于 2018-03-25 23:58:32
回答 2查看 12.8K关注 0票数 8

我有一个坞群配置,在其中我部署了两个堆栈(mainmon),我可以在一个堆栈中公开一个端口,我可以从另一个堆栈引用它。但是,我试图找到一种方法,不这样做,而是让它使用127.0.0.11 DNS访问它。

mon中,我有一个名为grafana的服务

使用https://docs.docker.com/docker-cloud/apps/service-links/#discovering-services-or-containers-on-another-stack,这表明我可以使用堆栈名来引用它,但是当我试图使用ping grafana.mon时,它没有工作,它只是返回无效的主机名。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2018-03-26 22:17:10

要做到这一点,您所需要的就是让它使用相同的网络,然后他们将是可见的。在我的例子中,我定义了一个名为public的网络,它是由我的所有堆栈外部引用的。

代码语言:javascript
复制
docker network create -d overlay --attachable public

在我的docker-compose.yml文件中

代码语言:javascript
复制
networks:
  public:
    external:
      name: public

要访问它,只需使用服务名称。

票数 11
EN

Server Fault用户

发布于 2020-11-08 19:05:55

您需要启用两个堆栈通过覆盖网络类型进行连接,然后允许两个堆栈使用(至少在所需的服务上)外部为两个堆栈创建的覆盖网络。

覆盖网络应该在堆栈上升之前创建,因此需要连接的服务可以“附加”到它上。

创建这样的网络

代码语言:javascript
复制
docker network create --driver overlay --attachable 

然后在env文件中引用服务名称,您可以检查服务调用的名称。

代码语言:javascript
复制
docker service ls

ID              NAME                     MODE          REPLICAS      IMAGE                  PORTS
vkz5vccbmce7    foo-stack_por-service    replicated    1/1           por-service:1.0.0      *:33065->3306/tcp
sjpnrkm1iiha    foo-stack_vic-service    replicated    1/1           vic-service:1.0.0      *:8081->80/tcp
0capavl31oab    bar-stack_tar-service    replicated    1/1           tar-service:1.0.0      *:33066->3306/tcp
9vohh24jt6hy    bar-stack_zen-service    replicated    1/1           zen-service:1.0.0      *:8082->80/tcp

现在从name列获取服务的名称。例:酒吧-堆叠焦油服务

请注意,您的服务以部署时指定的堆栈名称作为前缀。

代码语言:javascript
复制
docker stack ls

NAME                SERVICES            ORCHESTRATOR
foo-stack           2                   Swarm
bar-stack           2                   Swarm
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/904535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档