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

标签 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": ""
            }

最佳答案

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

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

The MAC address is generated using the IP address allocated to the container to avoid ARP collisions, using a range from 02:42:ac:11:00:00 to 02:42:ac:11:ff:ff

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

希望对你有帮助。

关于docker - Docker 如何为容器分配 MAC 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946453/

相关文章:

docker - 从守护进程配置文件设置 docker 容器环境

c++ - 如何固定输出 C++、STL 中文本的位置

azure - 无法从 GitLab 部署到 Azure 容器注册表

ember.js - Ember-数据 "TypeError: this.container is undefined"

docker - GitLab CI runner 无法连接到 tcp ://localhost:2375 in kubernetes

mysql - 无法查看 docker 容器内的表

java - tomcat docker-compose 无法访问共享卷

docker - 如何配置Docker注册表镜像?

docker - 使用 Docker 访问主机中存在的文件结构

c++ - 如何在 C++ 中填充 int 和 vector<int> 的映射?