Ubuntu
在 Docker 容器中使用自動掛載的 USB 驅動器
在 Ubuntu 中,USB 驅動器在
/media/<user>/<drive>
插入時會自動掛載。我想用它來使新連接的 USB 驅動器在正在執行的 Docker 容器中可用。所以我習慣-v /media/<user>:/media/<user>
將USB掛載點的整個父目錄掛載到容器中。如果在容器啟動之前連接了 USB 驅動器,這將很有效。在這種情況下,USB 掛載點具有權限
0777
並且屬於<user>
. 如果在容器已經執行時連接了 USB 驅動器,則掛載點會出現在容器中,但具有權限0700
並由其所有root
!任何人都可以闡明這裡可能發生的事情嗎?我可以想像,預設情況下 USB 驅動器會自動掛載為
0700
屬於root
,然後會啟動其他一些機制將其更改為0777
and<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