Назад | Перейти на главную страницу

Используйте автоматически подключенные 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>. Только изменение не улавливается Докером. Это правда?

Я уже копался в тоннах форумов и списков рассылки, но не мог понять механизм. Я также пробовал некоторые правила 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