Docker:将现有遗留系统转换为 Docker 化形式,同时保持原始网络方案

Docker: Converting an existing legacy system to Dockerized form while maintaining original network scheme

我正在进行一个将现有 VOIP 遗留系统转换为 docker 化形式的项目。现有系统由 5 台不同的 Linux 机器组成,每台机器有 2 个不同的网络接口 - 一个暴露于 public WAN,另一个是私有局域网。我计划创建一个 docker 撰写文件来设置编排。

网络大致是这样的:

服务器#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 网络的最佳方法,我希望每个容器都保留他的 public IP(Eth1 上的那个,这意味着从容器将保持与原始服务器上相同的 public IP),但也能够与同一私有网络上的每个其他 docker 容器进行通信,同时还使其易于管理并具有尽可能少的开销。

是否可以混合使用 Bridge 网络并将每个 docker 容器连接到它,同时还为每个 docker 容器提供一个 Macvlan 网络,它将绑定到不同的网络接口主机级别?

我能否为主机创建 2 个网络接口,每个网络接口用于不同的子网,同时在它们上维护不同的 IP 地址(一个网络接口将包含 2 个 IP,另一个网络接口包含 3 个,并且每个接口会有对应的Macvlandocker网络)?

有没有更好的方法来完成这项工作?

编辑

我使用 nmtui 命令创建了一个具有多个 IP 地址的 IPv4 接口,我想将我的 3 个容器连接到该网络接口,同时为每个容器提供不同的 public IP . 根据下面给出的屏幕截图,是否足以创建一个 Macvlan 网络并为每个容器分配自己的 IPv4 地址?在线阅读它并没有为我提供明确的答案,但 Docker 引擎似乎可能会忽略此设置并为每个容器使用定义的主 IP。 本质上,我希望每个容器都从它自己的主机 IP 接收流量,并从同一 IP 传送流量。

services:
  kamin:
    networks:
      kamin:
        priority: 1
        ipv4_address: "69.31.245.134"
networks:
  kamin:
    driver: macvlan
    driver_opts:
      parent: enp0s25
    ipam:
      config:
        - subnet: 69.30.245.130/29
          gateway: 69.31.245.129

我能够使用主机级别的 3 个网络接口和 docker 级别的 1 个自定义网桥和 2 个 ipvlan 网络使其工作。