微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker:强制网络上的内部容器通信

如何解决Docker:强制网络上的内部容器通信

正在进行一个项目,该项目旨在将现有的VOIP遗留系统转换为dockerized形式。现有系统由5台不同的Linux机器组成,每台机器具有2个不同的网络接口-一个暴露于公共WAN,另一个是私有Lan网络。我计划创建一个docker compose文件来设置业务流程。

网络大致如下:

服务器#1 Eth0:IP 192.168.0.200/24 Eth1:IP X.X.X.65 / 27

服务器#2 Eth0:IP 192.168.0.201/24 Eth1:IP X.X.X.66 / 27

服务器#3 Eth0:IP 192.168.0.202/24 Eth1:IP X.X.X.87 / 27

服务器#4 Eth0:IP 192.168.0.203/24 Eth1:IP Y.Y.Y.240 / 27

服务器#5 Eth0:IP 192.168.0.204/24 Eth1:IP Y.Y.Y.241 / 27

服务器1-3是同一子网的一部分,服务器4-5也是同一子网的一部分。

我正在尝试找到将该网络设置转换为docker网络的最佳方法,我希望每个容器都保留其公共IP(Eth1上的那个),这意味着从该容器产生的流量将保持与原来相同的公共IP。在原始服务器上),而且还能够与同一私有网络上的所有其他Docker容器进行通信,同时还使其易于管理并且具有最小的开销。

我已经使用docker-compose创建了3个macvlan网络和1个桥接网络,但是问题是DNS解析为每个容器提供了我在其所属的Macvlan网络中为其赋予的IP地址,例如,分配了2个docker桥接网络和同一个Macvlan网络,彼此解析的容器名称将提供其Macvlan地址而不是网桥IP地址。我想仅通过BRIDGE网络强制所有容器之间的通信(本质上是将Macvlan网络设置为私有模式)。我该如何做到?

解决方法

考虑将--别名"docker network connect"一起使用。就像在网桥网络中为容器指定专用名称,并使用该名称进行内部通信一样

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。