如何分配静态公共IP到docker集装箱

有什么办法将static public IP分配给容器。 所以容器有公共IP。 客户端可以使用IP访问容器。

对于目前发布的Docker版本,这是不可能的(Docker背后没有大量的手工工作),尽pipe它很less有必要。

Docker通过使用端口映射公开容器中的networking服务,端口映射可以绑定到主机上的特定IP地址。 所以,如果你想有一个networking服务器在192.168.10.10和另一个networking服务器在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选项用于将端口映射绑定到特定的IP地址。 现在,您有两个容器在同一端口(端口80)上提供服务,但在不同的IP地址上。

现在,Docker 1.10和新docker run --ip选项现在可以在docker network connect看到。

如果指定,则在重新启动停止的容器时将重新应用容器的IP地址。 如果IP地址不再可用,则容器无法启动。

确保IP地址可用的一种方法是在创buildnetworking时指定--ip-range ,并从该范围外select静态IP地址。 这可确保当此容器不在networking上时,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 

另见杰西弗拉泽尔的博客文章“ IPs for all things ”,并拉请求docker/docker#19001 。