2016-01-09 28 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