在 Docker 容器中使用自动安装的 USB 驱动器

Mou*_*gip 3 ubuntu mount usb docker

在 Ubuntu 中,USB 驱动器在/media/<user>/<drive>插入时会自动安装。我想用它来使新连接的 USB 驱动器在正在运行的 Docker 容器中可用。所以我习惯-v /media/<user>:/media/<user>将USB挂载点的整个父目录挂载到容器中。

如果在容器启动之前连接了 USB 驱动器,则此方法效果很好。在这种情况下,USB 挂载点具有权限0777并且属于<user>. 如果在容器已经运行时连接了 USB 驱动器,则挂载点会出现在容器中,但具有权限0700并由 拥有root

谁能解释一下这里可能发生的事情吗?我可以想象,默认情况下,USB 驱动器会自动安装为0700属于root,然后一些其他机制会启动,将其更改为0777<user>。只是 Docker 没有接收到更改。这是真的?

我已经挖掘了大量的论坛主题和邮件列表,但无法弄清楚其中的机制。我还尝试了一些 udev 规则(例如这个),但没有效果。

小智 6

我知道这个问题是从 2018 年开始的,但解决方案是使用绑定安装并将“绑定传播”设置为“共享”(不适用于卷)。

代替:

-v /media/<user>:/media/<user>
Run Code Online (Sandbox Code Playgroud)

使用:

--mount type=bind,source=/media/<user>,target=/media/<user>,bind-propagation=shared
Run Code Online (Sandbox Code Playgroud)

有关绑定传播的更多信息:https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation