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

Arc*_*ano 8 docker docker-swarm

我有一个 docker swarm 配置,在那里我部署了两个堆栈(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它时,它只返回无效的主机名。

Arc*_*ano 8

为此,您只需要使其使用相同的网络,然后它们就会可见。在我的例子中,我定义了一个名为 的网络public,它被我的所有堆栈从外部引用

docker network create -d overlay --attachable public
Run Code Online (Sandbox Code Playgroud)

在我的 docker-compose.yml 文件中,我有

networks:
  public:
    external:
      name: public
Run Code Online (Sandbox Code Playgroud)

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