1. ホーム

[解決済み】非 root で Docker COPY するには?

2022-04-09 16:43:29

質問

Dockerイメージのビルド中に、どのように COPY をイメージに挿入し、生成されたファイルの所有者を root 以外のユーザーにすることはできますか?

解決方法は?

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

オプションのフラグを使用する --chown=<user>:<group> のどちらかを指定します。 ADD または COPY コマンドを使用します。

例えば

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

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

課題 34263 はマージされ リリース v17.09.0-ce .


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

Dockerは、以下の機能をサポートしていません。 COPY をroot以外のユーザーで使用することができます。そのため chown / chmod ファイル COPY コマンドを使用します。

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 Reference にある COPY コマンドにはこう書かれています。

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


歴史 この機能は、複数のGitHub issueで追跡調査されています。 6119 , 9943 , 13600 , 27303 , 28499 , 課題30110 .

課題番号 34263 は、オプショナルフラグ機能を実装したイシューで 課題番号 467 は、ドキュメントを更新しました。