首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在docker-compose中扩展两个服务(其中一个是网络)并保持它们彼此的network_mode连接?

如何在docker-compose中扩展两个服务(其中一个是网络)并保持它们彼此的network_mode连接?
EN

Stack Overflow用户
提问于 2021-10-16 18:31:22
回答 1查看 44关注 0票数 0

在一个服务连接到另一个服务的网络的场景中(如下面的示例.yml所示),有没有一种方法可以使用--scale来扩展这两个服务并使它们连接到正确的网络?

因为在app1中使用vpn1网络,app2使用vpn2网络等。

代码语言:javascript
复制
services:
    vpn:
        image: myvpn

    app:
        image: myapp
        depends_on: vpn
        network_mode: service:vpn

我希望能够使用docker-compose up -d --scale app=5 --scale vpn=5运行容器

问题是,如果我以当前设置的方式扩展这两个容器(假设每个服务有两个实例以简化),两个"app“服务都连接到第一个"vpn”服务。

我可以通过检查app-1app-2来确认这一点。在vpn中,它们都显示"NetworkMode": "container:ef37426bec3dbd9c182187d87faf5fe8c92c1e1fa26066f57d163f301af2574e",这是第一个vpn容器。

我知道这是预期的行为,因为.yml文件指示的是network_mode: service:vpn,而不是network_mode: service:vpn-${container ID here}

我想找到一种方法来设置app-1使用vpn-1作为NetworkMode,app-2使用vpn-2作为NetworkMode,等等。

EN

回答 1

Stack Overflow用户

发布于 2021-10-17 09:18:21

开箱即用的docker-compose允许两种通信方法:

docker

  • VIP -一个VIP和DNS记录,用于使用docker的configuration

  • DNSRR在副本之间进行负载平衡-一个DNS记录和多个IP(每个服务一个),用于允许用户实现自己的负载平衡器

就我所做的研究而言,您所要求的配置只能通过一种方式使用docker-compose来实现,您可以通过容器名称在每个客户端服务中设置后端DNS名称。

例如,如果我想连接到第二个实例,我将连接到docker_backend_2

另一种需要更亲力亲为的方法是在服务之间进行对话,并决定哪个将连接到返回的IP中的谁到nslookup或一些其他探测方法

如果此连接配置对您很重要,您应该查看Kubernetes,其中您的基本工作单元是pod,并且您可以在每个pod中旋转多个容器镜像,然后您将在pod中旋转每个服务中的一个,并在pod的网络中直接连接到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69598502

复制
相关文章

相似问题

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