2016-09-06 69 views
0

我需要运行两个容器,每个容器包含特定(公共)IP(11.11.11.20和11.11.11.21)上的脚本绑定。docker主机本身位于10.10.10.222。将不同的公有IP分配给不同的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 

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

请问有什么解决办这个?

在此先感谢! Dominik

+0

我不确定,这是否是您的问题的原因,但尽管如此,您可以尝试不使用11.11.11.22而不是11.11.11.20。原因是:11.11.11.20是网络地址,您不应将此地址分配给任何接口。 11.11.11.20/30上唯一可用的地址是11.11.11.21和11.11.11.22和11.11.11.21。 11.11.11.20是网络ID(二进制表示以'00'结尾),11.11.11.23是广播地址(二进制表示以'11'结尾)。 – Olli

+0

感谢您的回应!我尝试了它,并与集装箱码头上的IP .21和.22响应无法启动nginx-0:此池中没有可用地址 –

+0

我让他们开始: 子网:11.11.11.0/24 但他们现在有错网关:11.11.11.1 ,我需要一个固定的网关的主机的IP子网,如:10.10.10.111 任何想法如何添加? –

回答

1

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

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

相关问题