2017-11-02 4 views
0

非rootユーザーとしてコンテナを起動しようとしています。生成されているボリュームにはrootのみアクセス権があります。コンテナの非ルートユーザーは、コンテナのボリュームディレクトリに書き込むことができません。Dockerコンテナボリュームにrootのみのアクセス権があります

ドッキングウィンドウ-compose.yml

volumes: 
     - ./trm/workspace:/opt/kad/translation/workspace 

Dockerfile:

RUN chown -R nonrootuser /opt/kad/translation/workspace 
VOLUME /opt/kad/translation-resource-monitor/workspace 

は、root以外のユーザーへの書き込みアクセスを持つボリュームを作成する方法はあります。

+0

Dockerファイルを表示 – user2915097

答えて

0

ボリュームは生成されませんが、ホスト特権でマウントされます。また、Dockerfileディレクティブは、コンテナを実行する前のイメージビルドでも実行されます。あなたの場合/opt/kad/translation/workspaceが所有するディレクトリnonrootuserは、コンテナの起動時にホストと同じuid/gidが所有する./trm/workspaceに置き換えられています。したがって、コンテナを実行する前にホストフォルダが正しい権限を持っていることを確認する必要があります。 G:

chown -R uid_of_nonrootuser_in_container:gid_of_nonrootuser_in_container \ 
    ./trm/workspace && docker-compose up -d 

注あなたはそれがユーザ名とグループ名だ、コンテナのユーザーのuidとgidを使用していない必要がありますので、ホスト上の容器内の異なるユーザがあること。 uidとgidを見つけるには、id nonrootuserをコンテナに入れてください。

chmod -R 0777 ./trm/workspace 

しかし、それはあなたのフォルダのセキュリティの少ない制御することができます:

別の解決策は、(マニッシュ・ジョシーが指摘したように)すべてのユーザーのためのディレクトリを書き込み可能にすることです。

+1

これは、このプロセスを自動化する際に問題を引き起こす可能性があります。あなたが他のホストへのread + write + executeアクセスを与えられるかもしれない、または777パーミッションと言えるかもしれない、ホストtoコンテナにディレクトリをマウントすることができればもっと簡単でしょう。 –

+0

@dizeeeさん、ありがとうございました。 – user2010672

関連する問題