在非特权和非主机网络模式下,docker 中的 hcitool lescan(蓝牙 LE)可以使用吗?

在非特权和非主机网络模式下,docker 中的 hcitool lescan(蓝牙 LE)可以使用吗?

我是 docker 新手。对于特定任务,我无法在非特权和非主机网络模式下扫描 docker 中的 BLE/BlueZ。以下是我在 Debian-Jessie-8.8.0 Host 和 debian:jessie docker 镜像中的结果):

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

我甚至授予了 Host 上 docker 的 ALL-CAP 权限,但仍然无法成功。

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

那么,是否有可能在非特权和非主机网络模式下在 docker 中扫描 BLE/BlueZ?

答案1

快完成了...!

在 Docker 社区的帮助下,首先我已成功启动 DBus 服务通过登录docker进入docker容器,如下所示:

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=主机此权限,可以启动蓝牙服务。

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

现在只需通过“不共享主机网络命名空间”来启动蓝牙服务(自定义--net = host为私有网络)

如果有人有任何线索,那将会很有帮助。

答案2

我成功了一半:

在Docker 社区的帮助下,我已成功通过登录docker在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

接下来只是想启动蓝牙服务...如果有人有任何线索,那将会很有帮助。

相关内容