2013-08-28 36 views
14

每当我跑码头工人,容器,我看到它使用一个随机的MAC地址:如何设置Docker LXC容器的MAC地址?

eth0  Link encap:Ethernet HWaddr de:6f:de:74:bd:d9 

如何设置一个特定的MAC地址的容器中运行?

我可以使用同一个MAC地址同时运行多个容器吗?这些容器不需要访问外部网络,也不需要相互通话。

+0

立刻浮现在脑海的第一个问题是为什么呢?你有某种过滤或基于MAC的访问控制设置吗?你试图完成的实际业务目标是什么? – amattn

+1

是的,我的服务允许用户从网络浏览器运行工具。为了安全起见,我使用Docker容器运行这些工具。其中一种工具需要绑定到特定的MAC地址,所以我需要以某种方式限制MAC地址随机化。 –

回答

11

MAC地址使用LXC配置选项lxc.network.hwaddr进行设置。 下面是如何使用泊坞窗0.6.1设置MAC地址的例子:

docker run --lxc-conf="lxc.network.hwaddr=92:20:de:b0:6b:61" my_image ifconfig 

在输出中,你会看到这是设置的HWaddr:

eth0  Link encap:Ethernet HWaddr 92:20:de:b0:6b:61 

更新:

以前的开关-lxc-conf(带有1个破折号)已被弃用。

用上面的开关,你泊坞窗必须使用LXC司机:-e lxc

+0

如何使用-e变量设置mac地址,谢谢 – Noor

2

以上回答为我工作,帮助我非常多,但我需要一个更详细一点得到它的工作。 当你有一个应用程序的mac地址许可证时,这非常有用。 因为这是我能找到的关于这个主题的唯一帖子,所以我想我对它进行了扩展。

对我来说,它需要更多的工作 - 否则交换机将被默默丢弃。 对Ubuntu 12.04:

  1. 编辑/ etc /默认/泊坞窗:DOCKER_OPTS = “ - DNS 8.8.8.8 -e LXC”
  2. 易于得到安装LXC(LXC-码头工人是不够的)
  3. 搬运工运行--lxc-conf的= “lxc.network.hwaddr = 92:20:德:B0:6B:61” -t MYIMAGE
12

较新版本的docker采取--mac-address=12:34:56:78:9a:bc开关docker run

[email protected]:~# sudo docker run --rm --mac-address"=12:34:de:b0:6b:61" ubuntu ifconfig | grep HWaddr 
eth0  Link encap:Ethernet HWaddr 12:34:de:b0:6b:61 

https://docs.docker.com/reference/run/

+0

mac选项应该是:--mac-address =“12:34:de:b0:6b:61”? – zhanxw

+0

你的问题是关于报价?它们是不必要的,但是无害的。 –

+1

这是正确的答案,应该被接受为这样。接受的答案在码头17.03上不起作用。 –