【问题标题】:mounting USB volume in docker在 docker 中安装 USB 卷
【发布时间】:2020-05-20 15:35:24
【问题描述】:

我有一个连接到 debian 主机的 USB 卷。我想在 docker 中“挂载”设备。使用 --volume 是不可能的,因为设备可能是短暂的,甚至容器也没有运行。

工作流程看起来像:

  • 容器将启动(将只能访问它需要访问的 USB 设备)
  • 在里面安装卷
  • 做一些工作
  • 卸载
  • 停止容器

这对我不起作用(/dev/sdc 是我的 USB 设备。理想情况下,我想使用 /dev/disk/by-id/usb-MBED_VFS_0240000048824e450041700fdedd003598d1000097969900-0:0 但 --device 不接受 : in这是路径)

vagrant@parallels:~$ sudo docker run --rm --interactive --tty --device /dev/sdc ubuntu
    [sudo] password for vagrant:
    root@76c5c87bd4a6:/# mkdir /tmp/1
    root@76c5c87bd4a6:/# mount /dev/sdc /tmp/1
    mount: /tmp/1: permission denied.

如果通过了 --privileged 就可以了

vagrant@parallels:~$ sudo docker run --rm --interactive --tty --privileged --device /dev/sdc ubuntu
root@1717829c3d16:/# mkdir /tmp/1
root@1717829c3d16:/# mount /dev/sdc /tmp/1
root@1717829c3d16:/# ls /tmp/1

为什么我使用“--device”也需要通过--privileged

【问题讨论】:

    标签: docker


    【解决方案1】:

    传递--device 可以让您访问设备,但不会授予您通过mount 操作修改文件系统的权限。也就是说,“权限被拒绝”错误来自 mount 尝试,而不是来自访问设备的尝试。

    请注意,另一种工作流程是将主机上的设备挂载到临时目录中,然后使用绑定挂载 (-v /temporary/mountpoint:/path/in/container) 为容器加注星标。这样做的好处是既不需要 --device 也不需要提升权限。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多