将USB设备(/dev/cu.usbserial)暴露给正在运行的Docker容器的最佳方式是什么?是否可以将设备别名为容器中的不同名称,类似于端口映射的工作方式?我尝试从容器中读取和写入串行设备(闪存固件),因为我拥有容器中的所有工具。到目前为止,我已经在下面列出了所有我尝试过的东西。
试验1:使用--device
使用--device选项时,我收到错误:docker: Error response from daemon: error gathering device information while adding custom device "/dev/cu.usbserial": no such file or directory。
试验2:使用--mount和--volume
在将/dev路径添加到preferences下的文件共享后,我尝试了以下命令:
docker run -it --rm --volume $(pwd):/home/app/ --volume /dev/cu.usbserial:/dev/cu.usbserial --entrypoint "/bin/bash" container:tag但是这个命令实际上是永远挂起的。并使用下面的--mount模拟:
docker run -it --rm --volume $(pwd):/home/app/ --mount type=bind,source=/dev/cu.usbserial,target=/dev/cu.usbserial --entrypoint "/bin/bash" container:tag我收到以下错误:Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /dev/cu.usbserial。
试验3:使用symlink
我还尝试将设备符号链接到我附加到容器的目录,但容器无法跟随该链接。
编辑(29/6/2020)
正如@ current指出的那样,如果你的主机运行OSX,那么这个问题目前还没有解决方案。here正在跟踪该问题。
发布于 2020-06-30 01:27:50
尝试在特权模式下运行docker容器:
sudo docker run -it --rm --volume $(pwd):/home/app/ --privileged --entrypoint "/bin/bash" container:tag详情请看这里:https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
注:这在"Docker for Mac“上不起作用。查看此处:https://github.com/docker/for-mac/issues/900
发布于 2020-06-30 02:32:38
在特权模式下运行,不挂载卷。特权模式将为容器提供对/dev的可见性,而无需任何额外的挂载。
sudo docker run -it --rm --privileged --entrypoint "/bin/bash" container:taghttps://stackoverflow.com/questions/62643320
复制相似问题