web-dev-qa-db-ja.com

Dockerコンテナー内にマウントされたFuseを公開する

Hubic(オンラインストレージ)をマウントするためのDockerイメージを実行し、それをホストに公開しようとしています

これまでに機能しているのは、Fuseポイントを正しくコンテナにマウントすることです(/mnt/hubicへ)。

Dockerを実行しているときに/path/on/Host:/mnt/hubicとしてマップされたボリュームで実行しようとしていますが、これは機能するようです(つまり、dockerが存在しない場合はディレクトリを作成します)。ただし、コンテンツは表示されません。コンテナーに入ると、オンラインストレージからファイルを表示できますが、ホストフォルダーには何も含まれていません

Dockerがこれを行うためのオプションがありませんか?

コンテナーを開始するために使用しているコマンド

docker run -v ~/.hubicfuse:/root/.hubicfuse -v /tmp/mounted:/mnt/hubic --device /dev/Fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined -it {container_name}

5
exussum

解決策は投稿に由来します s3がコンテナー内にマウントされています。ホストに公開する方法は?

この投稿では、glusterFSを使用するソリューションについて説明します。コンテナに対してより多くの権限が必要です。使用されるdockerコマンド:

docker run --cap-add SYS_ADMIN --device Fuse -v Host_mount_dir:container_mount_dir:shared IMAGE COMMAND

「パス/ fooは/ fooにマウントされていますが、共有マウントではありません...」のようなエラーの場合、その理由は、Dockerデーモンがsystemdとは異なるマウント名前空間で実行されるためです。これは、同じ名前空間で実行するためのソリューションです。

mkdir -p /etc/systemd/system/docker.service.d/
cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF

そして、Dockerデーモンを再起動します。

注釈は、-vによってバインドされたディレクトリにマウントされた場合、マウントはホスト上で認識されるということです。

6
harrymc