2013-08-28 19 views
14

Jedes Mal, wenn ich einen Docker Container laufe, sehe ich, dass es eine zufällige MAC-Adresse verwendet:Wie wird die MAC-Adresse für Docker LXC-Container festgelegt?

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

Wie kann ich eine bestimmte MAC-Adresse für einen Behälter laufen?

Kann ich mehrere Container gleichzeitig mit derselben MAC-Adresse ausführen? Diese Container müssen nicht auf das externe Netzwerk zugreifen und müssen nicht miteinander kommunizieren.

+0

Sofort die erste Frage, die den Sinn kommt, ist, warum? Haben Sie irgendwo eine Filterung oder eine MAC-basierte Zugangskontrolle? Was ist das eigentliche Geschäftsziel, das Sie erreichen möchten? – amattn

+1

Ja, mein Dienst ermöglicht es Benutzern, Tools über einen Webbrowser auszuführen. Aus Sicherheitsgründen verwende ich diese Tools mit einem Docker-Container. Eines dieser Tools muss an eine bestimmte MAC-Adresse gebunden sein, daher muss ich die MAC-Adress-Randomisierung irgendwie einschränken. –

Antwort

11

Die MAC-Adresse wird mit der LXC-Konfigurationsoption lxc.network.hwaddr festgelegt. Hier ist ein Beispiel dafür, wie Adresse einzustellen MAC mit Docker 0.6.1:

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

In der Ausgabe finden Sie die HWaddr sehen, die eingestellt wurde:

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

Update:

Der vorherige Schalter -lxc-conf (mit 1 Strich) ist veraltet.

den obigen Schalter zu verwenden, Dockarbeiter Sie die LXC-Treiber verwenden müssen: -e lxc

+0

Wie benutze ich die Variable -e, um die MAC-Adresse zu setzen bitte, danke – Noor

2

Die obige Antwort für mich gearbeitet mir und half sehr, aber ich brauchte ein wenig mehr Details, um es zu arbeiten. Dies ist sehr hilfreich, wenn Sie eine App haben, die Lizenzen der Mac-Adresse. Da dies der einzige Beitrag war, den ich zu diesem Thema finden konnte, dachte ich, ich würde es weiter ausführen.

Für mich erforderte es ein wenig mehr zu arbeiten - sonst wird der Schalter still verworfen. für Ubuntu 12.04:

  1. Datei/etc/default/Docker: DOCKER_OPTS = "- dns 8.8.8.8 -e lxc"
  2. apt-get install lxc (LXC-Docker nicht genug ist)
  3. docker laufen --lxc-conf = "lxc.network.hwaddr = 92: 20: de: b0: 6b: 61" -t myimage
12

Neuere Versionen von docker nehmen --mac-address=12:34:56:78:9a:bc Schalter auf 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 

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

+0

Die Mac-Option sollte sein: --mac-Adresse = "12: 34: de: b0: 6b: 61"? – zhanxw

+0

Ist Ihre Frage zu den Angeboten? Sie sind unnötig, aber harmlos. –

+1

Dies ist die richtige Antwort und sollte als solche akzeptiert werden. Die angenommene Antwort funktioniert nicht am Andockfenster 17.03. –

Verwandte Themen