非ルートとしてDocker COPYを実行するにはどうすればいいですか? 質問する

非ルートとしてDocker COPYを実行するにはどうすればいいですか? 質問する

Docker イメージを構築するときに、COPY結果のファイルが root 以外のユーザーに所有されるようにイメージにファイルを追加するにはどうすればよいでしょうか?

ベストアンサー1

バージョンv17.09.0-ce以降の場合

オプションのフラグを、またはコマンドの--chown=<user>:<group>いずれかで使用します。ADDCOPY

例えば

COPY --chown=<user>:<group> <hostPath> <containerPath>

--chownフラグのドキュメントがメインで公開されましたDockerfile リファレンスページ

問題34263統合され、利用可能になりましたリリース v17.09.0-ce


v17.09.0-ceより古いバージョンの場合

COPYDocker はroot 以外のユーザーとしてはサポートしていません。コマンドの後にファイルをchown/する必要があります。chmodCOPY

Dockerfileの例:

from centos:6
RUN groupadd -r myuser && adduser -r -g myuser myuser
USER myuser
#Install code, configure application, etc...
USER root
COPY run-my-app.sh /usr/local/bin/run-my-app.sh
RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \
    chmod 744 /usr/local/bin/run-my-app.sh
USER myuser
ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]

v17.09.0-ce より前のバージョンでは、コマンドの Dockerfile リファレンスには次のようにCOPY記載されていました。

すべての新しいファイルとディレクトリは、UID と GID が 0 で作成されます。


履歴この機能は、複数の GitHub の問題を通じて追跡されています。61199943136002730328499問題 30110

問題 34263オプションのフラグ機能を実装した問題であり、問題 467ドキュメントを更新しました。

おすすめ記事