Ubuntu

在 Docker 容器中使用自動掛載的 USB 驅動器

  • January 2, 2020

在 Ubuntu 中,USB 驅動器在/media/<user>/<drive>插入時會自動掛載。我想用它來使新連接的 USB 驅動器在正在執行的 Docker 容器中可用。所以我習慣-v /media/<user>:/media/<user>將USB掛載點的整個父目錄掛載到容器中。

如果在容器啟動之前連接了 USB 驅動器,這將很有效。在這種情況下,USB 掛載點具有權限0777並且屬於<user>. 如果在容器已經執行時連接了 USB 驅動器,則掛載點會出現在容器中,但具有權限0700並由其所有root

任何人都可以闡明這裡可能發生的事情嗎?我可以想像,預設情況下 USB 驅動器會自動掛載為0700屬於root,然後會啟動其他一些機制將其更改為0777and <user>。只有更改沒有被 Docker 接收。這是真的?

我已經探勘了大量的論壇主題和郵件列表,但無法弄清楚其中的機制。我還嘗試了一些 udev 規則(比如這個),但這些都沒有效果。

我知道這個問題來自 2018 年,但解決方案是使用綁定掛載並將“綁定傳播”設置為“共享”(不適用於卷)。

代替:

-v /media/<user>:/media/<user>

採用:

--mount type=bind,source=/media/<user>,target=/media/<user>,bind-propagation=shared

有關綁定傳播的更多資訊:https ://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

引用自:https://serverfault.com/questions/903534