从 Docker 容器内部获取主机的 MAC 地址

8
在我的Docker应用程序中,我需要一个硬件锚点,并考虑使用容器的MAC地址。但是:由于Docker容器的MAC地址是易失性的,并且在容器启动时动态分配,所以我不能使用此MAC地址(请参见Docker docs

为避免ARP冲突,使用从02:42:ac:11:00:00到02:42:ac:11:ff:ff的范围生成MAC地址,该范围使用分配给容器的IP地址

Docker主机的MAC地址将是可行的解决方案。
如何从在此主机上运行的容器中访问(Linux)主机的MAC地址?

1
我和你处于同样的情况。除了下面给出的答案,你有没有找到其他解决方案? - blueren
2个回答

2
您可以在启动容器时将MAC地址作为环境变量传递给容器。
docker run -e mac=$(ip link show eth0 | awk '/ether/ {print $2}') alpine env

1
好的,但这需要在启动期间手动操作。有没有一种解决方案,可以不需要显式地将 MAC 地址交给容器? - WeSee
3
没有使用.env文件的等效docker-compose解决方案是什么? - WeSee
这在Rancher和rancher-compose中不起作用。那么对于Rancher环境,是否也有解决方案? - WeSee

1
如果您在“主机”网络模式下运行,则可以从容器中检索mac地址,而无需传递它。

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