如何为 Docker LXC 容器设置 MAC 地址?
Posted
技术标签:
【中文标题】如何为 Docker LXC 容器设置 MAC 地址?【英文标题】:How to set the MAC address for Docker LXC containers? 【发布时间】:2013-08-31 00:22:22 【问题描述】:每当我运行 docker 容器时,我都会看到它使用随机 MAC 地址:
eth0 Link encap:Ethernet HWaddr de:6f:de:74:bd:d9
如何为容器运行设置特定的 MAC 地址?
我能否让多个容器同时使用相同的 MAC 地址运行?这些容器不需要访问外网,也不需要相互通信。
【问题讨论】:
马上,想到的第一个问题是为什么?您在某处是否有某种过滤或基于 MAC 的访问控制设置?您要实现的实际业务目标是什么? 是的,我的服务允许用户从网络浏览器运行工具。为了安全起见,我使用 Docker 容器运行这些工具。其中一个工具需要绑定到特定的 MAC 地址,因此我需要以某种方式限制 MAC 地址随机化。 【参考方案1】:较新版本的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"? 您对报价有疑问吗?它们是不必要但无害的。 这是正确的答案,应该被接受。接受的答案在 docker 17.03 上不起作用。 $ docker run -it --rm --mac-address"=92:20:de:b0:6b:61" ubuntu:16.04 bash root@cb8c4f4260df:/# cat /sys/class /net/eth0/地址 92:20:de:b0:6b:61【参考方案2】:上面的答案对我有用,对我帮助很大,但我需要更多细节才能让它发挥作用。 当您有一个许可 MAC 地址的应用程序时,这非常有用。 由于这是我能找到的关于这个主题的唯一帖子,我想我会扩展它。
对我来说,它需要更多的工作 - 否则开关将被默默地丢弃。 对于 ubuntu 12.04:
-
编辑 /etc/default/docker: DOCKER_OPTS="--dns 8.8.8.8 -e lxc"
apt-get install lxc(lxc-docker不够用)
docker run --lxc-conf="lxc.network.hwaddr=92:20:de:b0:6b:61" -t myimage
【讨论】:
【参考方案3】:使用 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
(带有 1 个破折号)已被弃用。
要使用上述开关,您的 docker 必须使用 LXC 驱动程序:-e lxc
【讨论】:
请教如何使用-e变量设置mac地址,谢谢以上是关于如何为 Docker LXC 容器设置 MAC 地址?的主要内容,如果未能解决你的问题,请参考以下文章