Dockerコンテナ内のNFSマウントディレクトリにアクセスすると「Operation not permitted」エラー

私はWebアプリを開発しており、QNAP-NASのファイルシステムにアクセスしてディレクトリやファイルの編集・作成を行う必要があります。

NFSをdockerコンテナにマウントするため、以下のdocker-composeファイルを使用しました:

services:
  app:
    ... # 関係のない部分
    volumes:
      - .:/app 
      - "nfs-base:/Z" # NFSボリュームをコンテナの/baseディレクトリにマウント

volumes:
  nfs-base:
    driver: local
    driver_opts:
      type: nfs
      o: "nfsvers=4,addr=IPADDRESS_OF_THE_QNAP-NAS,rw"
      device: ":/"

ボリューム作成時にエラーは発生せず、コンテナを確認すると :/Z/base ディレクトリが作成されているため、qnapファイルシステムの共有フォルダー base は正しくマウント(またはdocker-composeファイルで認識)されているようです。

問題は、コンテナの内容を調査して :/Z/base 内のファイルが正しくマウントされているかレビューしようとしたときに発生します。

コンテナ内で /base ディレクトリにアクセスしようとすると、次のエラーが表示されます: bash: cd: base/base: Operation not permitted

また、コンテナ内でフォルダのパーミッションを確認すると、次のようなプロンプトが表示されます:

drwxrwxrwx 28 1000 root 4096 May 10 09:04 base

これは、共有フォルダーへのアクセス権限の問題だと思いますが、QNAPに不慣れなため、どのように権限を付与すればよいか分かりません。

なお、dockerコンテナと同じホストからsshでQNAP-NASの/baseディレクトリにアクセスする場合、パーミッションの問題は発生せず(baseディレクトリ内のすべてのファイルにアクセスできます)。

NFSでマウントされたディレクトリへの読み書きの権限をdockerコンテナに与えるには、どうすればよいですか?

NAS には通常通りアクセスできているとのことなので、問題は NAS 側にはないかもしれません。とはいえ、ご質問内容を踏まえて、弊社チームで状況を確認し、分析やサポートできる点がないか調査いたします。ご連絡いただきありがとうございます!

効果があるかどうかはわかりませんが、コントロールパネルの共有フォルダー設定セクションにあるNFS共有の設定は確認しましたか?

共有設定でボリュームへのアクセスを制限なく許可しているか念のため確認してみてください。これがコンテナに影響するかははっきりしませんが、試してみる価値はあると思います。

私たちのチームから、NFS の権限設定が正しく構成されているかご確認いただきたいです。以下もご確認ください。

  • フォルダに対して NFS が有効になっているか

  • 接続を許可されている IP / サブネットか

  • 読み取り / 読み書き 権限が有効になっているか

  • また、「Squash no user」を選択することもお試しください

さらに、下記のように YAML を修正して動作をテストしていただけますか?

services:
  app:
    volumes:
      - nfs-base:/base

volumes:
  nfs-base:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=IPADDRESS_OF_THE_QNAP-NAS,nfsvers=4,rw"
      device: ":/base"

よろしくお願いします!