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