位于两个网络中的容器如何找到每个网络中具有相同名称的容器

问题描述 投票:0回答:1

通过“每个网络的容器具有相同的名称”,我的意思是这样的情况:

有两个网络,分别称为一和二。一个包含一个称为服务器的容器,另一个包含一个称为服务器的容器。现在,如果另一个容器同时连接一个网络和两个网络,那么如何区分两个服务器容器?

这可以通过两个docker-compose.yml文件进行演示:

#server.yml

version: '3.7'
services:
  server:
    image: toolbelt/netcat
    entrypoint: nc -kl 1111

#client.yml

version: '3.7'
services:
  client:
    image: toolbelt/netcat
    networks:
      - one
      - two
    entrypoint:
      - sh
      - -c
      - echo abc | nc -q 1 server 1111

networks:
  one:
    external:
      name: one_default
  two:
    external:
      name: two_default

我们可以使用以下两个服务器启动

docker-compose -p one -f server.yml up
docker-compose -p two -f server.yml up

并要求客户与之联系

docker-compose -p client -f client.yml up

并且当前,只有网络1中的服务器回显abc,这意味着网络2中的服务器被遮蔽。

我想知道如何使客户端能够访问两个服务器?

我知道网络别名功能,可以在其中为每个服务器在其自己的网络中附加一个名称,因此,如果使它们唯一,则可以要求客户端访问两者。但实际上,我无权更改server.yml。

是否有可能在客户端的docker-compose.yml文件中以某种方式为服务器提供别名,或者是否有其他方法可以将两台服务器区分开?

docker docker-compose docker-networking
1个回答
0
投票

您可以通过以下方式连接到其他服务:

[servicename].[compose project name]_[network name]

例如

  • 您的服务称为“服务器”
  • 您的“服务器”服务的撰写项目称为“]”>
  • 您的网络称为“ one_default”

  • ping server.one_one_default

© www.soinside.com 2019 - 2024. All rights reserved.