問題をローカルで再現できません。 encfs ファイルシステムを Docker ボリュームとして公開しようとすると、コンテナーを開始しようとするとエラーが発生します:
FATA[0003] Error response from daemon: Cannot start container <cid>:
setup mount namespace stat /visible: permission denied
だから、何か違うことが起こっている可能性があります。いずれにせよ、これが私の問題を解決したものです:
デフォルトでは、FUSE はファイルシステムをマウントしたユーザーのみがそのファイルシステムへのアクセスを許可されます。 Docker コンテナを実行している場合、そのコンテナは最初は root
として実行されています .
allow_root
を使用できます または allow_other
FUSE ファイルシステムをマウントするときのマウント オプション。例:
$ encfs -o allow_root /encrypted /other
ここでは、allow_root
root ユーザーにマウントポイントへのアクセスを許可しますが、allow_other
誰でもマウントポイントにアクセスできるようになります (ディレクトリの Unix パーミッションでアクセスが許可されている場合)。
allow_root
を使用して encfs ファイルシステムでマウントした場合 、その後、そのファイルシステムを Docker ボリュームとして公開できますおよび そのファイルシステムの内容は、コンテナー内から正しく表示されます。
これは、ホストがマウントポイントをマウントする前に docker デーモンを開始したためです。この場合、ディレクトリ名の inode はまだホストのローカル ディスクを指しています:
ls -i /mounts/
1048579 s3-data-mnt
次に、s3fs などのヒューズ デーモンを使用してマウントする場合:
/usr/local/bin/s3fs -o rw -o allow_other -o iam_role=ecsInstanceRole /mounts/s3-data-mnt
ls -i
1 s3-data-mnt
私の推測では、docker はディレクトリ名を i ノードにキャッシュするブートストラップを行っていると思います (この空白を埋めることができる以上の知識を持っている人)。
あなたのコメントは正しいです。マウントが完了した後に docker を再起動するだけで、ボリュームはホストからコンテナーに正しく共有されます。 (または、すべてのマウントのマウントが完了するまで、docker の起動を遅らせることもできます)
興味深いのは(しかし、今では完全になっています)、コンテナを終了してホストのマウントポイントをアンマウントすると、コンテナ内から共有ボリュームへのすべての書き込みが魔法のように表示されたことです(それらはiノードに保存されていましたホスト マシンのローカル ディスク):
[[email protected] s3-data-mnt]# echo foo > bar
[[email protected] s3-data-mnt]# ls /mounts/s3-data-mnt
total 6
1 drwxrwxrwx 1 root root 0 Jan 1 1970 .
4 dr-xr-xr-x 28 root root 4096 Sep 16 17:06 ..
1 -rw-r--r-- 1 root root 4 Sep 16 17:11 bar
[[email protected] s3-data-mnt]# docker run -ti -v /mounts/s3-data-mnt:/s3-data busybox /bin/bash
[email protected]:/mounts/s3-data# ls -als
total 8
4 drwxr-xr-x 3 root root 4096 Sep 16 16:05 .
4 drwxr-xr-x 12 root root 4096 Sep 16 16:45 ..
[email protected]:/s3-data# echo baz > beef
[email protected]:/s3-data# ls -als
total 9
4 drwxr-xr-x 3 root root 4096 Sep 16 16:05 .
4 drwxr-xr-x 12 root root 4096 Sep 16 16:45 ..
1 -rw-r--r-- 1 root root 4 Sep 16 17:11 beef
[email protected]:/s3-data# exit
exit
[[email protected] s3-data-mnt]# ls /mounts/s3-data-mnt
total 6
1 drwxrwxrwx 1 root root 0 Jan 1 1970 .
4 dr-xr-xr-x 28 root root 4096 Sep 16 17:06 ..
1 -rw-r--r-- 1 root root 4 Sep 16 17:11 bar
[[email protected] /]# umount -l s3-data-mnt
[[email protected] /]# ls -als
[[email protected] /]# ls -als /s3-stn-jira-data-mnt/
total 8
4 drwxr-xr-x 2 root root 4096 Sep 16 17:28 .
4 dr-xr-xr-x 28 root root 4096 Sep 16 17:06 ..
1 -rw-r--r-- 1 root root 4 Sep 16 17:11 bar