hcitool lescan (Bluetooth LE) im Docker im Non-Privileged- und Non-Host-Netzwerkmodus ist möglich?

871
Edwin K

Ich bin ein Neuling im Docker. Bei einer bestimmten Aufgabe kann ich BLE / BlueZ im Andockfenster im Netzwerkmodus "Nicht privilegiert" und "Nicht-Host" nicht scannen. Dies sind meine Ergebnisse in Debian-Jessie-8.8.0 Host und debian: jessie docker image):

root1@73ab53a9268e:/# hciconfig -a Can't open HCI socket.: Operation not permitted root1@73ab53a9268e:/# bt-device -l Couldn't connect to DBus system bus: Could not connect: Connection refused root2@0d208802d44a:/# hciconfig -a Can't open HCI socket.: Address family not supported by protocol 

Ich habe sogar ALL-CAP-Berechtigungen für Docker auf dem Host erteilt, konnte es aber immer noch nicht schaffen.

docker run --name container-ID --cap-add=ALL -d -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro Image-ID 

Ist es also möglich, BLE / BlueZ im Docker im Netzwerkmodus "Nicht privilegiert" und "Nicht-Host" zu scannen?

0

2 Antworten auf die Frage

1
Edwin Kannaiyan

Fast fertig...!

Mit der Hilfe der Docker Community habe ich zunächst den DBus-Dienst im Docker-Container erfolgreich gestartet, indem ich das Docker wie folgt angemeldet habe :

docker run -v /opt/bluetooth:/var/lib/bluetooth -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run -it debian:jessie

Dann durch Hinzufügen von --cap-add = SYS_ADMIN und --net = diese Berechtigung hosten, um den Bluetooth-Dienst zu starten.

docker run --cap-add=SYS_ADMIN -v /opt/bluetooth:/var/lib/bluetooth -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run --net=host -it debian:jessie

Sie möchten jetzt nur den Bluetooth-Dienst starten, indem Sie den Host-Netzwerk-Namespace nicht freigeben (Anpassen von --net = Host an privates Netzwerk).

Wenn jemand einen Hinweis hat, wäre das hilfreich.

0
Edwin Kannaiyan

Mir ist die Hälfte gelungen:

Mit der Hilfe der Docker-Community habe ich den DBus-Service im Docker-Container erfolgreich gestartet, indem ich das Docker wie folgt angemeldet habe:

docker run -v /opt/bluetooth:/var/lib/bluetooth -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /tmp/$(mktemp -d):/run -it debian:jessie 

Als nächsten Blick auf den Bluetooth-Dienst ... Wenn jemand eine Ahnung hat, wäre das hilfreich.