在非特权和非主机networking模式下的Docker中的hcitool lescan(BLE或任何扫描,比如说,hcitool,gatttool,btdevice-l等等)是可能的?
我是docker工的新手。 对于特定的任务,
我无法在非特权和非主机networking模式下扫描Docker中的BLE / BlueZ。 这些是我的结果>(在Debian-Jessie-8.8.0 Host和Debian:jessie root1@73ab53a9268e:/# hciconfig -a
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
我甚至给了主机上的docker的全部权限,但仍然无法完成。
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
那么,是否有可能在非特权和非主机networking模式下,在Docker中扫描BLE / BlueZ(比如hcitool,gatttool,btdevice-l等等)?
几乎完成…!
在Docker社区的帮助下, 首先,我通过logindocker成功启动docker容器中的DBus服务 ,如下所示:
docker run -v /opt/bluetooth:/var/lib/bluetooth -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run -it debian:jessie
然后通过添加–cap-add = SYS_ADMIN和–net = host权限,可以启动蓝牙服务。
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
现在只需要通过“不共享主机networking命名空间”来启动蓝牙服务(自定义–net =主机到专用networking)
如果有人得到任何线索,这将是有益的。
成功启动Docker容器中的DBus / Bluetooth服务,并通过添加–cap-add = SYS_ADMIN,–cap-add = NET_ADMIN和–net = host flags / permission来扫描蓝牙设备
docker run --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --net=host -it debian:jessie
(成功没有 – 特权模式)现在只需要通过“不共享主机networking命名空间”(自定义–net =主机到专用networking)来启动蓝牙服务,