2014-12-30 4 views
15

Ich verwende CoreOS Stable 494.5.0 mit Vagrant/VirtualBox und führe das Vanilla Ruby: 2.1.5 Docker Image aus. Ich versuche, Pipework zu verwenden, um den Docker-Container mit einer lokalen physischen Schnittstelle zu verbinden (im Gegensatz zur Verwendung von --net=host beim Ausführen des Containers), damit ich den Datenverkehr erkennen kann. Pipework erstellt [email protected] im Container und legt seine IP-Adresse richtig fest, aber die Verbindung endet im UNKNOWN-Status, und wenn ich versuche, die Verbindung mit ip link herzustellen, bekomme ich RTNETLINK answers: Operation not permitted.Warum erhalte ich eine RTNETLINK-Operation, die nicht zulässig ist, wenn Pipework mit Docker-Containern verwendet wird?

Wenn es einen Unterschied macht, muss ich ip link set dev eth1 up anstelle von ip link set dev [email protected] up verwenden, sonst bekomme ich Cannot find device "[email protected]".

Irgendwelche Ideen, was ich falsch mache?

Antwort

24

Dockercontainer haben standardmäßig nicht die vollen Berechtigungen. Versuchen Sie, diese Zugabe zu dem docker run Befehl:

--cap-add=NET_ADMIN 

List of capabilities

+0

Dank! Das hat das Problem "Operation nicht erlaubt" behoben! Ich kann immer noch nicht Traffic aus dem Container auf der lokalen Schnittstelle, mit der ich Pipework verwende, auslesen, aber das ist eine weitere SO-Frage. ;) – Bryan

+2

Hinweis: Wenn Sie 'docker-compose' verwenden, verwenden Sie den' cap_add' Schlüssel für den gegebenen Container mit 'NET_ADMIN' als Wert (muss ein Array sein, d. H.' - NET_ADMIN' in der nächsten Zeile) – petrkotek

Verwandte Themen