私は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 userwithaccess
、docker run --privileged
のすべてを試して、Dockerfile
の中にユーザーを追加し、特にそのグループをそのユーザーに割り当ててみました。何も働かなかった。
エンドでは、溶液は比較的簡単だった:
私のデータディレクトリの親ディレクトリが皆のためのアクセスを読んでいた、グループのメンバーではない、すなわち、ユーザー。私は問題なくマウントできました。 実際のデータに到達するには、Dockerfile
のユーザーをグループのに追加し、同じ名前とGID
を持っていることを確認しました。最後に、データディレクトリに移動して必要なファイルを読み込むことは問題ありませんでした。
私がマウントしようとしたディレクトリが特殊なケースであるのか、一般的に特定のグループアクセスでディレクトリをマウントできないのか分かりません。 私はこの回避策を見つけましたが、私が望むディレクトリが/
にあったなら、解決策はありません。バインド実装の
docker run -v /path/on/host:/path/on/container:ro my/image
デフォルトの動作はRWですが、これは読み取り専用に切り替えることができます。
あなたは 'privileged'モードでそれを実行しようとしたことがありますか? – tgogos
はい、残念ながら同じ結果で – Val