Networking Docker容器的多个静态IP
我有一个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
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容器。您成功了吗?我的要求也差不多。我很想知道你的案子的结果。