我尝试删除默认的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地址的最简单方法。
答案 0 :(得分:1)
IMO(我不是网络专家)你的问题没有意义。 eth0是您的网卡的接口,您的路由器或链接将为其分配IP。您可以使用主机网络选项共享此内容并避免使用veth和网桥的开销,但随后您的容器将无法获取自己的IP地址。您必须通过PC网卡 - 无法直接将容器连接到路由器。
目前尚不清楚您希望实现的目标,但我建议您查看Weave和Project Calico等网络解决方案。此外,JérômePetazzoni的pipework项目可能会引起人们的兴趣并帮助解释发生了什么。
您可以通过将--fixed-cidr
参数传递给Docker守护程序来控制Docker桥使用的IP范围,例如docker daemon --fixed-cidr=172.17.0.0/24
。我不认为这会做你想做的事情;您网络上的其他计算机将无法神奇地路由到这些地址。我认为最符合您意愿的解决方案可能是Project Calico。