如何在向Docker容器添加设备时避免冒号的转义?

4
  1. This is ok to add device which by serial id:

    docker run -it --rm --device /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A101A9A7-if00-port0 -v /dev:/dev ubuntu /bin/bash
    
  2. This is not ok to add device which by serial path:

    docker run -it --rm --device /dev/serial/by-path/pci-0000:00:14.0-usb-0:8:1.0-port0 -v /dev:/dev ubuntu /bin/bash
    

    It reports error:

    invalid argument "/dev/serial/by-path/pci-0000:00:14.0-usb-0:8:1.0-port0" for "--device" flag: bad format for path: /dev/serial/by-path/pci-0000:00:14.0-usb-0:8:1.0-port0
    See 'docker run --help'.

    Same error if do escape string for : as next:

    docker run -it --rm --device /dev/serial/by-path/pci-0000\:00\:14.0-usb-0\:8\:1.0-port0 -v /dev:/dev ubuntu /bin/bash
    
据我所知,对于 bind mount,我们现在可以使用类似于 --mount type=bind,source=/colon:path/test,destination=/data 的方式来处理它,详情请参考这里
那么我的问题是:对于 --device,我该怎么办呢?

你尝试过在设备名称周围使用单引号吗?像这样: docker run -it --rm --device '/dev/serial/by-path/pci-0000:00:14.0-usb-0:8:1.0-port0' -v /dev:/dev ubuntu /bin/bash - Flo
@Flo 不支持使用单引号'',也不支持使用双引号"" - atline
2
啊!你并不孤单,看看上一个回答:https://github.com/moby/moby/issues/8604#issuecomment-451705509 我不知道这是否是一个公开的问题…… - Flo
似乎半年前没有人处理这个问题。 - atline
1个回答

4

根据此讨论,对于我自己的答案:

CLI似乎不支持转义冒号,目前唯一的方法是创建类似于下面的符号链接:

ln -s /dev/serial/by-path/pci-0000:00:14.0-usb-0:8:1.0-port0 /dev/serial/by-path/mydevice01
docker run -it --rm --device /dev/serial/by-path/mydevice01 -v /dev:/dev ubuntu /bin/bash

这是我目前所做的解决方法。


1
谢谢你的回答,但是 Docker 的情况确实很糟糕。这个工具跑行业还有这样的问题... - pfalcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接