Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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": ""             } 
like image 369
monica Avatar asked Mar 22 '17 08:03

monica


People also ask

Do Docker containers have MAC addresses?

By default, the MAC address is generated using the IP address allocated to the container. You can set the container's MAC address explicitly by providing a MAC address via the --mac-address parameter (format: 12:34:56:78:9a:bc ). Be aware that Docker does not check if manually specified MAC addresses are unique.

How does Docker work on Mac?

Docker for Mac is a native MacOS X application that embeds a hypervisor (based on xhyve), a Linux distribution and filesystem and network sharing that is much more Mac native. You just drag-and-drop the Mac application to /Applications, run it, and the Docker CLI just works.

Where are Docker containers saved Mac?

On a Mac, the default location for Docker images is ~/Library/Containers/com. docker. docker/Data/vms/0/. Note than on Windows and Mac, Docker runs Linux containers in a virtual environment.


2 Answers

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.

like image 187
OscarAkaElvis Avatar answered Sep 30 '22 10:09

OscarAkaElvis


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

like image 42
Norbert Avatar answered Sep 30 '22 11:09

Norbert