如何为Docker LXC容器设置MAC地址?

16
每当我运行一个docker容器时,我都会看到它使用一个随机的MAC地址:
eth0      Link encap:Ethernet  HWaddr de:6f:de:74:bd:d9

如何为容器设置特定的MAC地址?

我能否同时运行多个具有相同MAC地址的容器?这些容器不需要访问外部网络,也不需要彼此通信。


立即,脑海中首先出现的问题是为什么?您是否在某个地方设置了某种过滤或基于MAC的访问控制?您实际上想要实现什么业务目标? - amattn
1
是的,我的服务允许用户从Web浏览器运行工具。出于安全考虑,我使用Docker容器来运行这些工具。其中一个工具需要绑定到特定的MAC地址,因此我需要以某种方式限制MAC地址随机化。 - Victor Lyuboslavsky
3个回答

15

较新的docker版本提供了--mac-address=12:34:56:78:9a:bc参数来运行docker run命令。

root@kevin-VirtualBox:~# 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/


Mac选项应该是:--mac-address="12:34:de:b0:6b:61"? - zhanxw
你的问题是关于引号吗?它们是不必要的,但是无害的。 - Kevin Smyth
1
这是正确的答案,应该被接受为此。已接受的答案在docker 17.03上不起作用。 - Adnan Y
1
$ docker run -it --rm --mac-address"=92:20:de:b0:6b:61" ubuntu:16.04 bash root@cb8c4f4260df:/# cat /sys/class/net/eth0/address 92:20:de:b0:6b:61 - Alex Punnen

11

可以使用 LXC 配置选项 lxc.network.hwaddr 来设置 MAC 地址。 以下是使用 Docker 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(一个破折号)已经被弃用。

要使用上面的选项,您的Docker必须使用LXC驱动程序:-e lxc


请问如何使用-e变量来设置MAC地址?谢谢。 - Noor

2
上面的答案对我很有帮助,但我需要更详细的说明才能让它起作用。当您拥有一个基于MAC地址授权的应用程序时,这非常有帮助。由于这是我在这个主题上找到的唯一帖子,所以我想扩展一下。
对我来说,它需要更多的工作 - 否则开关将被静默丢弃。 对于Ubuntu 12.04:
1.编辑/ etc / default / docker:DOCKER_OPTS =“--dns 8.8.8.8 -e lxc” 2.apt-get install lxc(lxc-docker不足够) 3.docker run --lxc-conf =“lxc.network.hwaddr = 92:20:de:b0:6b:61”-t myimage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接