泊坞窗。 从与Host相同的范围分配IP

我在玩docker。 现在我想分配IP到容器从我的主机操作系统具有相同的IP范围。

我的主机有IP地址192.168.1.50 (192.168.1.0/24networking)。 我想用于例如来自同一个networking的Docker容器的192.168.1.51。

为此,我已经安装了bridge-utils(我正在使用Ubuntu 14.04)并重新configuration了我的接口:

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 

现在我有这样的configuration:

 # 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 

如何创build与主机相同IP范围192.168.1.0/24的IP的每个新的docker? 如何为每个新的docker容器指定使用br0接口?

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

我使用下面的方法运行与自己的静态ips关联的大部分dockerized服务:

  1. 我为docker主机上的所有服务创建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 ... 

因此,每个人(包括其他码头集装箱)都可以使用众所周知的地址或名称来使用容器中的服务,甚至可以将容器(具有相应的别名)移动到不同的主机,一切都将继续工作。

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