将不同的公有IP分配给不同的Docker容器

我需要运行两个容器,每个容器包含一个绑定在特定(公共)IP(11.11.11.20和11.11.11.21)上的脚本。docker主机本身位于10.10.10.222。

我写了这个docker-compose.yml

version: '2' services: nginx-0: image: nginx:1.10 networks: app_net: ipv4_address: 11.11.11.20 nginx-1: image: nginx:1.10 networks: app_net: ipv4_address: 11.11.11.21 networks: app_net: driver: bridge ipam: driver: default config: - subnet: 11.11.11.20/30 

我混淆的ip a

 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 10.10.10.222/27 brd 10.10.10.223 scope global eth1 valid_lft forever preferred_lft forever inet 11.11.11.20/32 brd 11.11.11.20 scope global eth1:0 valid_lft forever preferred_lft forever inet 11.11.11.21/32 brd 11.11.11.21 scope global eth1:1 valid_lft forever preferred_lft forever 

但它告诉我地址已经在使用

有没有解决scheme来做到这一点?

提前致谢! 多米尼克

将地址更改为11.11.11.20/30子网内的有效值:nginx-0和nginx-1应具有地址11.11.11.21和11.11.11.22。 地址11.11.11.20无效,因为它是子网地址。

您似乎也使用主接口networking10.10.10.222/27之外的桥接接口上的地址。 如果主networking和次networking中都有接口(IP地址)的路由器,则辅助networking中的节点只能到达其他IP地址。 但是,11.11.11.20networking很难实现,因为这个networking中所有可用的地址都被你的nginx服务器占用。 对于桥接networking,最简单的解决scheme是使用主networking中的地址作为nginx服务器,并在主networking10.10.10.222/27中指定正确的网关地址。 相反,您可以使用更大的networking,如11.11.11.20/27,并将nginx服务器和路由器的IP地址放入其中。