2013-08-28 34 views
14

Ogni volta che corro un contenitore di finestra mobile, vedo che utilizza un indirizzo MAC casuale:Come impostare l'indirizzo MAC per i contenitori LXC Docker?

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

Come faccio a impostare un indirizzo MAC specifico per un contenitore di correre?

Sarà possibile disporre di più contenitori contemporaneamente con lo stesso indirizzo MAC? Questi contenitori non hanno bisogno di accedere alla rete esterna e non hanno bisogno di parlarsi.

+0

Immediatamente, la prima domanda che viene in mente è il motivo? Avete qualche tipo di filtro o configurazione di controllo degli accessi basata su MAC da qualche parte? Qual è l'obiettivo aziendale che stai cercando di realizzare? – amattn

+1

Sì, il mio servizio consente agli utenti di eseguire strumenti da un browser web. Per sicurezza, eseguo questi strumenti utilizzando un contenitore Docker. Uno di questi strumenti deve essere legato a uno specifico indirizzo MAC, quindi devo limitare in qualche modo la randomizzazione dell'indirizzo MAC. –

risposta

11

L'indirizzo MAC viene impostato utilizzando l'opzione di configurazione LXC lxc.network.hwaddr. Ecco un esempio di come impostare l'indirizzo MAC utilizzando Docker 0.6.1:

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

In uscita, si vedrà il HWaddr che è stato impostato:

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

Aggiornamento:

L'interruttore precedente -lxc-conf (con 1 trattino) è stato dichiarato obsoleto.

di utilizzare l'opzione di cui sopra, si deve essere Docker utilizzando il driver LXC: -e lxc

+0

come usare la variabile -e per impostare l'indirizzo mac per favore, grazie – Noor

2

La risposta di cui sopra ha funzionato per me e mi ha aiutato molto, ma avevo bisogno di un po 'più in dettaglio per farlo funzionare. Questo è molto utile quando si dispone di un'app che ha le licenze sull'indirizzo mac. Poiché questo era l'unico post che ho trovato su questo argomento, ho pensato di approfondirlo.

Per me, ha richiesto un po 'di più per funzionare - altrimenti l'interruttore verrà automaticamente eliminato. Per Ubuntu 12.04:

  1. modificare/etc/default/docker: DOCKER_OPTS = "- dns 8.8.8.8 -e LXC"
  2. apt-get install LXC (LXC-finestra mobile non è sufficiente)
  3. finestra mobile eseguire --lxc-conf = "lxc.network.hwaddr = 92: 20: de: b0: 6b: 61" myimage -t
12

recenti versioni di docker rimessa interruttore --mac-address=12:34:56:78:9a:bc a 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 

Vedi https://docs.docker.com/reference/run/

+0

L'opzione mac dovrebbe essere: --mac-address = "12: 34: de: b0: 6b: 61"? – zhanxw

+0

La tua domanda riguarda le virgolette? Sono inutili ma innocui. –

+1

Questa è la risposta corretta e dovrebbe essere accettata come tale. La risposta accettata non funziona sulla finestra mobile 17.03. –

Problemi correlati