是否可以将静态公共IP分配给Docker容器?

时间:2014-12-17 00:09:30

标签: networking docker lxc

我一直试图将我的五个公共IP中的一个分配给我的docker容器。由于docker的性质及其用途,似乎这应该是可能的。我发现这个网站我认为解释了我想要做的事情但是自从Docker离开LXC后它已经不再适用了:

http://programster.blogspot.com/2014/06/docker-run-multiple-docker-websites-on.html

我尝试使用我的容器正在使用的ip进行静态NAT连接,但这不起作用。 docker IP不会显示在我的路由器页面中,只显示主机ip。

我的问题是:

是否可以将静态公共IP分配给docker容器,如果是,如何?

是否可以在我的路由器配置页面中显示一个泊坞窗IP,如果是这样的话?

感谢。

3 个答案:

答案 0 :(得分:1)

Docker 1.10允许您为容器指定静态IP地址 对于它连接的每个网络。

(请注意,为了向后兼容,此功能仅支持自定义网络,并且仅在指定子网时才支持)

例如;

docker network create -d bridge --subnet 172.25.0.0/16 mynet

docker run -d --net=mynet --ip=172.25.3.3 nginx

有关详细信息,请参阅documentation pull request

答案 1 :(得分:0)

我知道有一个docker容器使用静态ip的唯一方法是使用pipework

假设您的意思是获取DHCP租约并显示在路由器页面上 - Docker没有想到任何事情。我不认为那是#34;码头工人的方式"。如果您使用的是基于systemd的发行版FWIW,那么使用nspawn非常简单。

答案 2 :(得分:0)

可能的解决方案,但我现在无法对其进行测试。如果这不正确,请告诉我。

使用macvlan创建虚拟网络接口:

请参阅https://superuser.com/questions/175475/ip-address-alias-assigned-by-dhcp

命令:

ip link add dev macvlan0 link eth0 type macvlan#macvlan0是v-card的名字(lol)

使用管道连接将容器连接到虚拟网络接口:

请参阅https://github.com/jpetazzo/pipework/#connect-a-container-to-a-local-physical-interface

命令:

pipework macvlan0 $($ containerid)dhcp