Docker容器桥接接口以分配IP地址

时间:2015-10-05 19:01:24

标签: docker ip

我尝试删除默认的docker0接口,因为我想使用eth0及其IP“范围”来分配IP地址。

首先,我尝试编辑/etc/network/interfaces并定义一个新界面,我可以使用该界面替换默认docker0.

auto br0
    iface br0 inet static
            address 10.1.1.1
            netmask 255.255.255.0
            bridge_ports dummy0
            bridge_stp off
            bridge_fd 0
    docker -d -b br0

您可以在下面看到我的容器的虚拟接口配置之一。新的br0接口不起作用;容器无法从其范围中获取地址。通过使用docker inspect,我发现他们拥有像172.17.0.X这样的IP地址,这些地址完全没用。

vethb9597ff Link encap:Ethernet  HWaddr 5a:b5:0d:20:56:11
          inet6 addr: fe80::58b5:dff:fe20:5611/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:648 (648.0 B)  TX bytes:1296 (1.2 KB)

所以我现在正在寻找在桥接模式下从eth0分配IP地址的最简单方法。

1 个答案:

答案 0 :(得分:1)

IMO(我不是网络专家)你的问题没有意义。 eth0是您的网卡的接口,您的路由器或链接将为其分配IP。您可以使用主机网络选项共享此内容并避免使用veth和网桥的开销,但随后您的容器将无法获取自己的IP地址。您必须通过PC网卡 - 无法直接将容器连接到路由器。

目前尚不清楚您希望实现的目标,但我建议您查看WeaveProject Calico等网络解决方案。此外,JérômePetazzoni的pipework项目可能会引起人们的兴趣并帮助解释发生了什么。

您可以通过将--fixed-cidr参数传递给Docker守护程序来控制Docker桥使用的IP范围,例如docker daemon --fixed-cidr=172.17.0.0/24。我不认为这会做你想做的事情;您网络上的其他计算机将无法神奇地路由到这些地址。我认为最符合您意愿的解决方案可能是Project Calico。