我正在进行一个项目,该项目将现有的 VOIP 遗留系统转换为 dockerized 形式。现有系统由 5 台不同的 Linux 机器组成,每台机器都有 2 个不同的网络接口——一个暴露于公共 WAN,另一个是私有 LAN 网络。我计划创建一个 docker compose 文件来设置编排。
网络大致是这样的:
服务器 #1 Eth0:IP 192.168.0.200/24 Eth1:IP XXX65/27
服务器 #2 Eth0:IP 192.168.0.201/24 Eth1:IP XXX66/27
服务器#3 Eth0:IP 192.168.0.202/24 Eth1:IP XXX87/27
服务器 #4 Eth0:IP 192.168.0.203/24 Eth1:IP YYY240/27
服务器 #5 Eth0:IP 192.168.0.204/24 Eth1:IP YYY241/27
服务器 1-3 属于同一子网,服务器 4-5 也是。
我正在尝试找到将此网络设置转换为 docker 网络的最佳方法,我希望每个容器都保留他的公共 IP(Eth1 上的那个,这意味着从容器生成的流量将保持与原始 IP 相同的公共 IP服务器),还能够与同一个专用网络上的所有其他 docker 容器进行通信,同时保持它易于管理并尽可能减少开销。
我使用 docker-compose 创建了 3 个 macvlan 网络和 1 个桥接网络,但问题是 DNS 解析为每个容器提供了我在它所属的 Macvlan 网络中给它的 IP 地址,例如 2 个 docker 被分配给桥接网络对于同一个 Macvlan 网络,解析彼此的容器名称将提供它们的 Macvlan 地址,而不是网桥 IP 地址。我想强制所有容器之间仅通过 BRIDGE 网络进行通信(基本上将 Macvlan 网络设置为私有模式)。我怎样才能做到这一点?