Networking Docker容器的多个静态IP

Networking Docker容器的多个静态IP,networking,docker,iptables,Networking,Docker,Iptables,我有一个Docker主机,它应该允许每个容器有多个静态IP地址。然后,容器中的应用程序应该能够选择从哪个地址向远程主机发送流量(例如,ping-I example.com) 想象一下这样的设置:IP地址10.0.0.10-10.0.0.19分配给ContainerA,10.0.0.20-10.0.0.29分配给ContainerB等等。任何到ContainerA地址范围的流量都会转发到ContainerA,而传出流量则来自ContainerA可以选择的该范围的地址。这同样适用于集装箱B

我有一个Docker主机,它应该允许每个容器有多个静态IP地址。然后,容器中的应用程序应该能够选择从哪个地址向远程主机发送流量(例如,
ping-I example.com

想象一下这样的设置:IP地址
10.0.0.10-10.0.0.19
分配给ContainerA,
10.0.0.20-10.0.0.29
分配给ContainerB等等。任何到ContainerA地址范围的流量都会转发到ContainerA,而传出流量则来自ContainerA可以选择的该范围的地址。这同样适用于集装箱B




默认的
--net=bridge
模式似乎不支持此功能。我能得到的最接近的结果是,到ContainerA的任何地址的传入流量都被正确地转发到容器,但传出流量总是来自同一个地址

使用
--net=host
时,第一个容器将连接到所有可用的IP地址,因此第二个容器将无法打开其IP范围内的套接字

如中所述,
docker run
命令的
--ip
选项似乎接近我所需要的。不幸的是,它似乎不支持每个容器有多个静态IP

如果更方便,可以使用CIDR子网而不是IP范围


我需要如何配置Docker来实现这一点?

我认为您可以通过,甚至创建您的

来实现这一点。每个Docker容器都只有一个IP。我们还可以设置自定义IP,通过将桥接网络设置为

docker network create net1--驱动程序=网桥--子网=“192.168.0.1/27”

如果您没有提到驱动程序,那么默认情况下它是网桥网络

因此,在这里使用--subnet,您可以为网络提供自定义IP地址,并且使用该网络,您还可以为该网络中的容器提供自定义IP地址

然后运行一个容器,如下所示:

docker run-it--network=net1--ip=“192.168.0.3”--name=MyContainer image\u name


现在,通过这种方式,您可以制作32-27=5,即(2^5)-2个docker容器。

您成功了吗?我的要求也差不多。我很想知道你的案子的结果。