我创建了一个包含Android SDK的Docker镜像,并试图在运行此图像的容器中公开我的Android手机.所以我使用了--privileged旗帜并安装了USB设备,如下所示:
$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb -d -P my-android:0.0.1
Run Code Online (Sandbox Code Playgroud)
但是,当我运行ADB设备时,它没有显示USB设备:
ubuntu@d56b666be455:~/Android/Sdk/platform-tools$ ./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
ubuntu@d56b666be455:~/Android/Sdk/platform-tools$
Run Code Online (Sandbox Code Playgroud)
容器内的lsusb列出了设备:
ubuntu@d56b666be455:~$ lsusb
...
Bus 002 Device 017: ID 04e8:6866 Samsung Electronics Co., Ltd GT-I9300 Phone [Galaxy S III] (debugging mode)
Run Code Online (Sandbox Code Playgroud)
但是,该设备在主机上可见:
? ./adb devices
List of devices attached
4d11abcd65b74045 device
Run Code Online (Sandbox Code Playgroud)
主机操作系统
$ uname -a
Linux ananya 3.16.0-33-generic #44~14.04.1-Ubuntu SMP Fri Mar …Run Code Online (Sandbox Code Playgroud) 我有一个Docker文件中包含的嵌入式系统开发映像.为了闪存代码,我需要通过USB Serial(例如/dev/ttyACM0)连接到节点.
使用Docker,我使用了新的绑定装载功能(参见https://github.com/dotcloud/docker/issues/111,-b或者最近的-v选项),将主机devfs暴露给容器.但是,每当我连接("cat/d/ttyACM0",d是对dev的绑定安装)到设备时,我得到"不允许操作".是否有可能不仅绑定mount,而且实际上在容器中使用字符设备?
是否可能通过udev规则公开特定的开发者?
最近,发布了Windows 的原生Docker客户端(> = Windows 7).
我想知道:是否可以转发访问物理设备,将Windows作为主机运行?
使用*nix主机,这似乎可以使用以下语法:
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash
Run Code Online (Sandbox Code Playgroud)
(如建议在这里),这将转发的USB设备/dev/ttyUSB0*nix的系统,以泊坞窗图像上.
--device可以在docker文档中找到该标志的描述.
Windows主机的语法是什么?
是否可以在docker容器内使用蓝牙(在我的情况下为BLE)加密狗?
在我的主机上:
$ hcitool dev
Devices:
hci0 5C:F3:70:64:F0:11
Run Code Online (Sandbox Code Playgroud)
在Docker里面它找不到任何东西.我正在运行Docker:
sudo docker run --privileged -i -t ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
我对Linux中的蓝牙子系统了解不足以了解主机和docker之间的区别.
该hci0设备确实出现在两个系统中:
$ ls -l /sys/class/bluetooth
lrwxrwxrwx 1 root root 0 Mar 5 01:23 hci0 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.3/2-2.3:1.0/bluetooth/hci0
Run Code Online (Sandbox Code Playgroud)
有人试图在Docker中使用蓝牙吗?
我正在尝试运行一个可以访问主机上串行端口的Docker容器.
这是我做的:
ls /dev/t*这回
/dev/tty.usbserial-因此它的工作docker run -it --privileged -v /dev:/dev
node:4.4.0 /bin/bash然后ls /dev/t*在没有返回/dev/tty.usbserial设备的容器内...我玩了很多参数的不同变化,但我还没找到工作的:)
此--device标志也不适合我,因为设备可能会重新连接,名称可能不同/dev/tty.usbserial.
我有一个最终要在打包在docker映像中的云计算服务(例如AWS或Google Cloud)上运行的应用程序。该应用程序需要在云中运行的原因是,该应用程序旨在处理大型数据文件,但是在实际部署之前,我想先在本地笔记本电脑上使用我已经使用过的单个大型数据文件对其进行测试。 (用于测试和开发目的)存储在外部USB驱动器上。
我的开发机器是一台OSX笔记本电脑,并且我正在使用最新版本的docker:
stachyra> uname -a
Darwin Andrews-MacBook-Pro-76.local 14.5.0 Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64
stachyra> docker --version
Docker version 1.10.2, build c3959b1
Run Code Online (Sandbox Code Playgroud)
OSX已将我的外部USB驱动器device挂载/dev/disk2s2为/Volumes/MGR DATA:
stachyra> df
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk1 974770480 435721376 538537104 45% 54529170 67317138 45% /
devfs 375 375 0 100% 650 0 100% /dev
map -hosts 0 0 0 100% 0 0 …Run Code Online (Sandbox Code Playgroud) 在规则文件中,通过传递参数"LABEL"和"DEVNAME"来执行脚本以进行安装
ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh %E{ID_FS_LABEL} %E{DEVNAME}"
Run Code Online (Sandbox Code Playgroud)
在usb_mount.sh文件中,将参数值打印为
echo "LABEL: $1 DEVNAME: $2" # this does not work reliably
Run Code Online (Sandbox Code Playgroud)
某些设备具有空的LABEL字段,因此DEVNAME被打印为标签.在bash脚本中,我们可以用双引号传递args,即使args为null也可以工作.
将args传递给udev规则的相同之处是什么?
此问题的解决方法可能是切换参数的顺序.有可靠的方法吗?