2016-01-09 69 views

回答

15

隨着泊塢窗的目前發佈的版本,這是不可能的(沒有很多背後碼頭工人的背部工作手冊),雖然它很少是必要的。

碼頭工人通過使用端口映射的暴露在容器中的網絡服務,以及端口映射可以綁定到特定IP地址的主機上。所以,如果你想擁有在192.168.10.10一個Web服務器,並在192.168.10.20另一個網站服務器,首先確保該地址可在主機上:

ip addr add 192.168.10.10/24 dev eth0 
ip addr add 192.168.10.20/24 dev eth0 

然後啓動第一容器:

docker run -p 192.168.10.10:80:80 mywebserver 

最後啓動第二容器:

docker run -p 192.168.10.20:80:80 mywebserver 

在上述命令時,-p選項用於端口映射綁定到partic ular ip地址。現在你有兩個容器在同一個端口(端口80)上提供服務,但在不同的IP地址上。

+0

據說我需要先將靜態公網IP分配給主機。然後使用'-p'將ip綁定到容器。 – firelyu

+0

在由larsks建議的解決方案中,我們是否也可以將相同的碼頭集裝箱連接到由@VonC在解決方案中創建的碼頭網絡? – Amitabh

+0

當docker主機也有綁定到0.0.0.0:80的服務器時會發生什麼? –

22

現在,這應該有可能與碼頭工人1.10和new docker run --ip option,你現在在docker network connect看到。

如果指定,當重新啓動停止的容器時,將重新應用容器的IP地址。如果IP地址不再可用,則容器無法啓動。

確保IP地址可用的一種方法是在創建網絡時指定--ip-range,並從該範圍之外選擇靜態IP地址。這確保了當該容器不在網絡上時,IP地址不會被提供給另一個容器。

$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network 

$ docker network connect --ip 172.20.128.2 multi-host-network container2 

Jessie Frazelle的博客文章 「IPs for all the Things」 看,和拉請求docker/docker#19001

+0

我得知你提供了一些IP 172.20.128.2到容器。但我怎麼能訪問在這個容器在IP 172.20.128.2運行的網站。我不想做端口轉發和使用主機IP。 – thinkingmonster

+0

@thinkingmonster好問題:請問這是我自己或其他人提出替代方案的問題。 – VonC

+0

我剛問過這個問題,請賜教。 http://stackoverflow.com/questions/40060764/how-can-i-access-the-website-running-inside-a-docker-container-using-ip-address – thinkingmonster