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

我试图删除默认的docker0接口,因为我想分配使用eth0和它的IP“范围”的IP地址。

首先,我试图编辑/etc/network/interfaces并定义一个新的接口,我可以用它replace默认的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 

你可以在下面看到我的一个容器的虚拟接口configuration。 新的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地址的最简单的方法。

国际海事组织(我不是一个networking专家)你的问题没有意义。 eth0是你的网卡的接口,它将被你的路由器或链路分配一个IP。 你可以共享这个,通过使用主机networking选项来避免veth和网桥的开销,但是你的容器不会得到自己的IP地址。 你必须通过你的电脑网卡 – 没有办法直接连接一个容器到路由器。

目前还不清楚你希望达到什么目标,但我build议看一下networking解决scheme,例如Weave和Project Calico 。 另外JérômePetazzoni的pipe道工程可能会引起人们的兴趣,并有助于解释发生了什么。

您可以通过将--fixed-cidrparameter passing给Docker守护进程(例如, docker daemon --fixed-cidr=172.17.0.0/24来控制Docker桥使用的IP范围。 我不认为这会做你想要的。 您的networking上的其他计算机将无法神奇地路由到这些地址。 我认为最接近您的愿望的解决scheme可能是项目印花布。