В 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>
. Только изменение не улавливается Докером. Это правда?
Я уже копался в тоннах форумов и списков рассылки, но не мог понять механизм. Я также пробовал некоторые правила udev (например, вот этот), но это не повлияло.
Я знаю, что вопрос с 2018 года, но решением было бы использование bind-mounts и установка для «распространения привязки» значения «shared» (недоступно для томов).
Вместо того:
-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