コンテナがマップされたフォルダまたはファイルにアクセスすることができず、「アクセス権が拒否されました」というエラーが表示されます。どうしたらよいでしょう。

コンテナがマップされたフォルダまたはファイルにアクセスすることができず、「アクセス権が拒否されました」というエラーが表示されます。どうしたらよいでしょう。

記事のいくつかは英語から機械翻訳されており、不正確な箇所や文法の間違いを含む場合があります。

症状

コンテナがSynology NASでマップされたフォルダまたはファイルにアクセスすることができません。そして、コンテナのログに「アクセス権が拒否されました」というエラーが表示されます。このエラーが発生すると、コンテナが突然停止する可能性があります。

この記事では例としてNode-REDコンテナを取り上げます。以下のログが表示されます。

Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'

環境

DSM 7.2およびそれ以降

診断

コンテナはマップされたフォルダまたはファイルにアクセスするための権限を持っていません。 「症状」で示された例ですが、コンテナの「/data」ボリュームは、読み取り/書き込み可能なフォルダにマップされていません。

適切なコンテナ機能のため、 Everyoneが、マップされたフォルダまたはファイルに対して少なくとも [読み取り] 権限を持っていることを確かめてください。 1 2詳細なアクセス許可の要件は画像に応じて異なる場合があります。詳細については、使用しているイメージのドキュメントを参照してください。

解決策

マップしたフォルダやファイルの権限を変更するには、次の手順に従ってください。

  1. [ Container Manager ] > [コンテナ] で、コンテナを選択し、[詳細] をクリックします。
  2. [設定] > [ボリューム設定]で、マップされたフォルダまたはファイルのアクセス許可をチェックします。下の例では、コンテナの/dataボリュームが読み取り/書き込み権限を持つ/docker/noderedフォルダにマップされています。
    1.png
  3. File Stationで割り当てたフォルダまたはファイルに進み、権限を構成しますFile StationContainer Managerの権限設定は一貫している必要があります。 Container Managerの設定に基づいて、 File Stationのアクセス許可を以下のように構成します。

    Container Manager の権限

    File Station の権限

    読み取り専用

    誰でも読むことができる1 2

    読み取り/書き込み

    全員読み書き3

    例えば、 Everyone/docker/noderedフォルダを読み書きできるようにします。
    2.png

注意:

  1. 「docker」共有フォルダのデフォルト権限をチェックします。
  2. コンテナは DSM でrootまたはその他の任意のユーザーとして実行されます。コンテナが使用するユーザー アカウントは、コンテナの構成に応じて異なる場合があります。したがって、 Everyoneに権限を割り当てると、マップされたフォルダとファイルがrootまたは任意のユーザーのどちらかがコンテナにアクセスできることを保証します。
  3. データのセキュリティを高めるため、共有フォルダ全体で行うのではなく、マップしたサブフォルダまたはファイルにのみ、 Everyoneに対する読み書き権限を適用します。これらの権限に加えて、共有フォルダ全体に対する権限を設定してアクセスをコントロールできます。
症状
環境
診断
解決策