2013-08-28 1 views
14

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

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

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

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

+0

Сразу же, первый вопрос, который приходит на ум, это почему? У вас есть какая-то фильтрация или настройка контроля доступа на основе MAC-адресов? Какова фактическая цель бизнеса, которую вы пытаетесь выполнить? – amattn

+1

Да, моя служба позволяет пользователям запускать инструменты из веб-браузера. Для обеспечения безопасности я запускаю эти инструменты, используя контейнер Docker. Один из этих инструментов должен быть привязан к конкретному MAC-адресу, поэтому мне нужно каким-то образом ограничить рандомизацию MAC-адресов. –

ответ

11

MAC-адрес задается с использованием опции конфигурации LXC lxc.network.hwaddr. Вот пример того, как установить MAC-адрес с помощью докер 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 тире) устарел.

Для использования выше переключатель, вы докер должны использовать драйвер LXC: -e lxc

+0

Как использовать переменную -e для установки адреса mac, пожалуйста, спасибо – Noor

2

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

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

  1. редактировать/и т.д./по умолчанию/докеров: DOCKER_OPTS = "- днс 8.8.8.8 -e Lxc"
  2. APT-получить установку LXC (LXC-докер не хватает)
  3. докер запустить --lxc-конф = "lxc.network.hwaddr = 92: 20: де: b0: 6b: 61" -t myimage
12

Новые версии 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/

+0

Опция mac должна быть: --mac-address = "12: 34: de: b0: 6b: 61"? – zhanxw

+0

Ваш вопрос относительно котировок? Они не нужны, но безвредны. –

+1

Это правильный ответ и должен приниматься как таковой. Принятый ответ не работает на докер 17.03. –