Как установить MAC-адрес для контейнеров Docker LXC?

Всякий раз, когда я запускаю контейнер докера, я вижу, что он использует произвольный MAC-адрес:

eth0      Link encap:Ethernet  HWaddr de:6f:de:74:bd:d9

Как установить определенный MAC-адрес для запуска контейнера?

Могу ли я иметь несколько контейнеров, работающих одновременно с одним и тем же MAC-адресом? Этим контейнерам не требуется доступ к внешней сети и не нужно разговаривать друг с другом.

Ответы

Ответ 1

MAC-адрес устанавливается с использованием опции конфигурации LXC lxc.network.hwaddr. Ниже приведен пример настройки MAC-адреса с помощью Docker 0.6.1:

docker run --lxc-conf="lxc.network.hwaddr=92:20:de:b0:6b:61" my_image ifconfig

На выходе вы увидите установленный HWaddr:

eth0      Link encap:Ethernet  HWaddr 92:20:de:b0:6b:61

Update:

Предыдущий переключатель -lxc-conf (с 1 тире) устарел.

Чтобы использовать вышеуказанный переключатель, вы должны использовать драйвер DXC: -e lxc

Ответ 2

В новых версиях docker установите переключатель --mac-address=12:34:56:78:9a:bc на docker run.

[email protected]:~# sudo docker run --rm --mac-address"=12:34:de:b0:6b:61" ubuntu ifconfig | grep HWaddr
eth0      Link encap:Ethernet  HWaddr 12:34:de:b0:6b:61  

См. https://docs.docker.com/reference/run/

Ответ 3

Вышеупомянутый ответ сработал у меня и очень помог мне, но мне нужно было немного больше деталей, чтобы заставить его работать. Это очень полезно, когда у вас есть приложение, которое имеет лицензии на mac-адрес. Поскольку это был единственный пост, который я смог найти по этой теме, я подумал, что я расширяю его.

Для меня это потребовало немного больше работы, иначе переключатель будет отключен. Для ubuntu 12.04:

  • изменить /etc/default/docker: DOCKER_OPTS = "- dns 8.8.8.8 -e lxc"
  • apt-get install lxc (lxc-docker недостаточно)
  • docker run --lxc-conf = "lxc.network.hwaddr = 92: 20: de: b0: 6b: 61" -t myimage