Dockerコンテナで自動マウントされたUSBドライブを使用する

Dockerコンテナで自動マウントされたUSBドライブを使用する

/media/<user>/<drive>Ubuntu では、USB ドライブは接続されると自動的にマウントされます。これを利用して、新しく接続された USB ドライブを実行中の Docker コンテナーで利用できるようにしたいと考えました。そこで、 -v /media/<user>:/media/<user>USB マウント ポイントの親ディレクトリ全体をコンテナーにマウントしていました。

USBドライブが接続されていればうまく機能します前にコンテナが起動します。この場合、USBマウントポイントには権限があり0777、に属しています<user>。コンテナが起動しているときにUSBドライブが接続されている場合、既に実行中、マウント ポイントはコンテナー内に表示されますが、代わりに権限があり0700、所有者は ですroot

ここで何が起こっているのか、誰か説明してもらえませんか? USB ドライブはデフォルトで0700に属するものとして自動的にマウントされ、その後、他の何らかのメカニズムが作動してこれをおよびrootに変更すると想像できます。変更のみが Docker によって認識されません。これは本当ですか?0777<user>

すでにフォーラムのスレッドやメーリングリストを大量に調べましたが、仕組みがわかりませんでした。また、いくつかのudevルールも試しました(これです) だが、効果はなかった。

答え1

この質問は 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

答え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

関連情報