2015-04-07 90 views
0

相同的范围分配IP我在玩码头。现在我想将IP分配给与我的主机操作系统具有相同IP范围的容器。码头工人。从主机

我的主机有IP地址192.168.1.50(192.168.1.0/24网络)。我想用Docker容器的相同网络中的192.168.1.51作为例子。

对于这个I`ve安装桥utils的(我使用Ubuntu 14.04)和重新配置我的接口:

auto lo 
iface lo inet loopback 

# The primary network interface 
auto eth0 
iface eth0 inet manual 

auto br0 
iface br0 inet static 
     address 192.168.1.50 
     network 192.168.1.0 
     netmask 255.255.255.0 
     broadcast 192.168.0.255 
     gateway 192.168.1.1 
     dns-nameservers 8.8.8.8 8.8.4.4 
     bridge_ports eth0 
     bridge_stp off 
     bridge_fd 0 
     bridge_maxwait 0 

现在我有这样的配置:

# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
     valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000 
    link/ether 08:00:27:a5:22:5d brd ff:ff:ff:ff:ff:ff 
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.42.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::5484:7aff:fefe:9799/64 scope link 
     valid_lft forever preferred_lft forever 
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 08:00:27:a5:22:5d brd ff:ff:ff:ff:ff:ff 
    inet 192.168.1.50/24 brd 192.168.0.255 scope global br0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::a00:27ff:fea5:225d/64 scope link 
     valid_lft forever preferred_lft forever 

如何建立每个新具有与主机相同的IP范围192.168.1.0/24的IP的码头工人?如何为每个新的码头集装箱指定使用br0界面?

+0

我还没有尝试过,但我认为这大致是docker run参数'--net = host'的作用。 –

+0

这与http://stackoverflow.com/questions/35742807/docker-1-10-containers-ip-in-lan和http://stackoverflow.com/questions/22641828/how-to-set-a -docker-containers-ip?lq = 1 – Dreamcat4

回答

-1

Docker无法做到这一点。它只能通过自己的决定来设置IP。

+0

这不再是事实。现在IP可以用'--ip'参数来设置。 – cantSleepNow

+0

@cantSleepNow谢谢。码头工人现在可以使用linux网桥吗? – ipeacocks

+0

不完全确定你的意思是“linux网桥”。 Docker拥有自己的桥接驱动程序https://docs.docker.com/engine/userguide/networking/dockernetworks/#the-default-bridge-network-in-detail – cantSleepNow

1

不是一个直接的答案,但它可以帮助,如果你的目标是将docker服务暴露给本地网络。

我跑我的大部分捆绑使用下一个方法给自己静态IP dockerized服务:

  1. 我搬运工主机上创建的所有服务IP别名
  2. 然后我运行的每个服务从该IP重定向端口所以每个服务都有自己的静态IP,可以被外部用户和其他容器使用。

样品:

docker run --name dns --restart=always -d -p 172.16.177.20:53:53/udp dns 
docker run --name registry --restart=always -d -p 172.16.177.12:80:5000 registry 
docker run --name cache --restart=always -d -p 172.16.177.13:80:3142 -v /data/cache:/var/cache/apt-cacher-ng cache 
docker run --name mirror --restart=always -d -p 172.16.177.19:80:80 -v /data/mirror:/usr/share/nginx/html:ro mirror 
... 

其结果是所有人(包括其他泊坞窗容器)可以通过众所周知的地址或名称中使用的服务容器中,你甚至可以移动的容器(对应化名)不同的主机一切都将继续工作。

+0

因此172.16.177。{20,12,13,19}在你主机的网络接口上? – ipeacocks

+0

它们是主IP接口的IP别名(http://en.wikipedia.org/wiki/IP_aliasing)。这就像网络接口有很多地址。我可以在一台主机上删除别名,并在需要移动容器时将其添加到另一台主机。 – ISanych

相关问题