私はしばらくの間、ドッカーで遊んでいましたが、コンテナ内で動作するサービスのログファイルディレクトリを抽出する際に問題がありました。Dockerコンテナ内のログファイルを非ルートとして抽出しています
私Dockerfileは、次のようになります。
ENV HOME=/software/service
ENV LOGS=$HOME/logs
COPY Service.jar $HOME/Service.jar
WORKDIR HOME
CMD java -jar Service.jar
私は彼がすべてのログファイル名にlog.log
LOGS
内の環境変数を作成し、それを2秒ごとに書き込みされていること、このためのスタブサービスを作成しました。
私が達成したいのは、log.log
ファイルをドッカーのLinuxホストにバックアップすることです。いくつかは、私がデータを永続化するために2つの人気のあるソリューションに出くわした複数のオプションについて読んだ後:docker run -v
オプション
データを保持するデータコンテナ
- オプション2は助けにはなりません私はLinuxホストマシンのログを見たいのでオプション1を選択しました。
オプション1の問題は、ログを
root
権限で作成していることです。これらのログを削除できるようにrootにログインしてください。誰もがrootユーザーを持っていなくてもログを削除する必要があるときに問題が発生する可能性があります。だから私はもう少しを読み、この問題のために、多くの「回避策」を見つけ、1は、ドッキングウィンドウの内側に私の
/etc/group
と/etc/passwd
ファイルを取り付けたと-u
オプションを使用して、他の人がこれに類似していました。私の主な質問は、にグループ全体の許可を与えながら、
-v
オプション付き/なしでログファイルを抽出することです。ありがとうございます!
を、私はコンテナ内のエラーを取得するには、コマンドを使用して、ログディレクトリを作成しようとしているときに許可が拒否されたと言います: 'docker run -ti \ -v/etc/group:/ etc/group:ro -v/etc/passwd:/ etc/passwd:ro \ -u $(id -u $ USER):$ id -g $ USER)\ my-image:lastest' 多分私は何かを忘れましたか? – TalOhana
このログディレクトリは何ですか?もちろん、権限のないユーザーでコンテナを実行する場合は、アクセス許可をチェックする必要があります。/tmpにログインしてみてください。例えば、 – whites11
ログディレクトリは、/ software/service/logsの下の 'Dockerfile 'に指定されていますが、なぜそれを作成できないはずですか? – TalOhana