首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将串行USB设备暴露给容器

将串行USB设备暴露给容器
EN

Stack Overflow用户
提问于 2020-06-30 01:11:34
回答 2查看 2.6K关注 0票数 1

将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下的文件共享后,我尝试了以下命令:

代码语言:javascript
复制
docker run -it --rm --volume $(pwd):/home/app/ --volume /dev/cu.usbserial:/dev/cu.usbserial --entrypoint "/bin/bash" container:tag

但是这个命令实际上是永远挂起的。并使用下面的--mount模拟:

代码语言:javascript
复制
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正在跟踪该问题。

EN

回答 2

Stack Overflow用户

发布于 2020-06-30 01:27:50

尝试在特权模式下运行docker容器:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2020-06-30 02:32:38

在特权模式下运行,不挂载卷。特权模式将为容器提供对/dev的可见性,而无需任何额外的挂载。

代码语言:javascript
复制
sudo docker run -it --rm --privileged --entrypoint "/bin/bash" container:tag
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62643320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档