2016-09-06 103 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地址放入其中。

相關問題