
/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