2017-04-25 14 views
0

私はDockerに対する相対的な初心者ですので、答えが明らかであれば私にご負担ください。Docker - ホスト上の読み取り専用ディレクトリからコンテナにデータを入力してください

私はホストの共有データディレクトリにアクセスしようとしています。これは特定のグループ権限を持ち、対象ユーザーのグループに対して読み取り専用です。

すでにdocker run -it -v /data:/data ubuntu /bin/bashを試しましたが、その結果のエラーはdocker: Error response from daemon: error while creating mount source path '/data': mkdir /data: permission deniedです。それは明らかに許可の問題です。

私がGoogleで見ている要点は、ボリュームをバインドマウントすると、読み書き可能なアクセス権が必要だということです。 私は別の方法を探しています。可能であればdocker volumeをお探しですか?

データディレクトリは膨大なので、どのような種類の複製も実現できません。また、権限を変更することはできません。

システム情報:

docker Server Version: 17.03.1-ce

Operating System: Ubuntu 16.04.2 LTS


EDIT:

だから私は最終的に@baratの役に立つコメントの後にそれを考え出しました。

問題は、コンテナ内にマウントしようとしていたディレクトリが、特定のグループのメンバーだけが内容を読み取ることができるように設定されているということでした。私はdocker run -u userwithaccessdocker run --privilegedのすべてを試して、Dockerfileの中にユーザーを追加し、特にそのグループをそのユーザーに割り当ててみました。何も働かなかった。

エンドでは、溶液は比較的簡単だった:

私のデータディレクトリの親ディレクトリが皆のためのアクセスを読んでいた、グループのメンバーではない、すなわち、ユーザー。私は問題なくマウントできました。 実際のデータに到達するには、Dockerfileのユーザーをグループのに追加し、同じ名前とGIDを持っていることを確認しました。最後に、データディレクトリに移動して必要なファイルを読み込むことは問題ありませんでした。

私がマウントしようとしたディレクトリが特殊なケースであるのか、一般的に特定のグループアクセスでディレクトリをマウントできないのか分かりません。 私はこの回避策を見つけましたが、私が望むディレクトリが/にあったなら、解決策はありません。バインド実装の

docker run -v /path/on/host:/path/on/container:ro my/image 

デフォルトの動作はRWですが、これは読み取り専用に切り替えることができます。

+0

あなたは 'privileged'モードでそれを実行しようとしたことがありますか? – tgogos

+0

はい、残念ながら同じ結果で – Val

答えて

0

これを試してみてください(:RO)

+0

は私に上記と同じエラーメッセージを返します – Val

+1

ドッカーのユーザー/グループにもこのパスへの読み取りアクセス権がありますか?あなたが "ドッカー"グループを作成していれば、ドッカーはこのグループにいるかどうかをチェックして、sudoなしでドッカーコマンドを使うことができるようになります。つまり、ドッカーグループはこのパスに少なくとも(?)読み込みアクセス権を持っていなければなりません。 – barat

+0

問題は、私はアクセス権に影響を与えません。つまり、ドッカーグループにはディレクトリへのアクセス権がありません。ドッカーのユーザーとは、ドッカーのコマンドを呼び出すユーザーを意味しますか?これはアクセス権があり、私は成功せずにコンテナにこれを渡そうとしていました... – Val

関連する問題