Используйте автоматически монтируемые USB-накопители в контейнере Docker

Используйте автоматически монтируемые 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 (вродеВот этот), но это не имело никакого эффекта.

решение1

Я знаю, что вопрос возник в 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

решение2

rsharedПодкрепления исходного монтирования подвергаются воздействию монтирований-реплик, а подкрепления монтирований-реплик также распространяются на исходное монтирование. Однако распространение также распространяется на точки монтирования, вложенные в любые исходные или репликационные точки монтирования, и из них.

docker run -v /media/$(whoami):/storage:rshared -it ubuntu bash

Дополнительная информация об автоматическом монтировании:

https://github.com/moby/moby/issues/32512
https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

Связанный контент