monica
monica

Reputation: 673

How does the Docker assign MAC addresses to containers?

When I start new containers, Docker automatically assigns some MAC address to them. I am curious if there is a pattern to this assignment. Can the MAC address be changed?

$ 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": ""
            }

Upvotes: 51

Views: 67046

Answers (3)

mngeek206
mngeek206

Reputation: 5177

The MAC addresses for Docker all begin with 02:42. The remaining four octets represent the IP address of the container in hex. 0xAC in hex is 172 in decimal, 0x11 is 17, 0x00 is, well, 0, and 0x02 is... 2. Thus this MAC address represents a container with the IP address 172.17.0.2. The default Docker bridge network is always given the IP range 172.17.0.0/16 by default, thus this would be the MAC address of the virtual Ethernet adapter given to the first container you run on a fresh Docker install.

See https://maclookup.app/faq/how-do-i-identify-the-mac-address-of-a-docker-container-interface for more information.

Upvotes: 1

Norbert
Norbert

Reputation: 31

If you look at the MAC address of the container interface(s), you can see that the last 4 octets are the hex representation of the IPv4 address. This part is prefixed by 02:42: For example:-

The docker generated MAC address of the container interface with IPv4 address 172.19.0.6 would be 02:42:ac:13:00:06

Upvotes: 3

OscarAkaElvis
OscarAkaElvis

Reputation: 5714

Docker start assigning always the same mac 02:42:ac:11:00:02 for the first container and then is increasing by one each mac for each different container.

Not sure why they are using that mac address. It seems 02:42:ac doesn't match any real vendor in oui databases. Look at the official documentation about this. They say:

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

Anyway, you can set any mac address on container generation using --mac-address parameter on the docker run command. For example doing a command like this docker run -ti --mac-address 00:00:00:00:00:11 ubuntu:trusty

Hope it helps.

Upvotes: 92

Related Questions