Docker如何为容器分配MAC地址?

时间:2017-03-22 08:38:40

标签: docker containers

当我启动新容器时,Docker会自动为它们分配一些MAC地址。如果这个作业有一个模式,我很好奇。可以更改MAC地址吗?

$ docker network inspect bridge

"Containers": {
            "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {
                "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c": {
                "EndpointID": "b047d090f446ac49747d3c37d63e4307be745876db7f0ceef7b311cbba615f48",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }

2 个答案:

答案 0 :(得分:44)

Docker开始为第一个容器分配相同的mac 02:42:ac:11:00:02,然后为每个不同的容器增加一个mac。

不确定他们为什么使用该mac地址。似乎02:42:ac与oui数据库中的任何真实供应商都不匹配。关于这个,请看official documentation。他们说:

  

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

无论如何,您可以使用docker run命令上的--mac-address参数在容器生成上设置任何mac地址。例如,执行类似docker run -ti --mac-address 00:00:00:00:00:11 ubuntu:trusty

的命令

希望它有所帮助。

答案 1 :(得分:0)

如果您查看容器接口的 MAC 地址,您可以看到最后 4 个八位字节是 IPv4 地址的十六进制表示。这部分以 02:42: 为前缀 例如:-

docker 生成的容器接口的 MAC 地址为 172.19.0.6,IPv4 地址为 02:42:ac:13:00:06