Docker0 gets random MAC at daemon startup - how to control

I’ve run into an interesting network-based licensing problem.

On linux, when the dockerd service starts, it assigns a quasi-random MAC address to the docker0 bridge interface.

In general, that’s fine, but I am using a piece of software that node-locks itself based on an ethernet interface’s address.

So, when I went to license the software, docker0 was the first interface the licensing app saw, alphabetically, and, apparently it took that interface’s MAC and generated a license using that. (Note - of course, depending on how you query the interfaces, they may or may not come out in a different order. Usually, lo comes out first in some probes. But the alphabetical order of ifconfig seems to be what is being used here.

Now, reboot, docker0 has a different MAC, software license manager gives me the ‘not licensed for this machine’ story.

I’ve seen several mentions of potential settings in daemon.json like setting mac-address in there, but none work. That option, while groovy when using docker run doesn’t seem to be respected in the daemon.json.

Also, I’ve alerted the license-generator software company to this, and, was able to license it by just not having docker around as a daemon, hand starting it when needed. But I’m interested, for the future, if there is a way to make this more configurable. I’m guessing I could muck about in the .service file and maybe force the option there, but, I’d rather not and just let it use the already-existent config file.

Thoughts?