通过“每个网络的容器具有相同的名称”,我的意思是这样的情况:
有两个网络,分别称为一和二。一个包含一个称为服务器的容器,另一个包含一个称为服务器的容器。现在,如果另一个容器同时连接一个网络和两个网络,那么如何区分两个服务器容器?
这可以通过两个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文件中以某种方式为服务器提供别名,或者是否有其他方法可以将两台服务器区分开?
您可以通过以下方式连接到其他服务:
[servicename].[compose project name]_[network name]
例如
您的网络称为“ one_default”
ping server.one_one_default