説明
DockerfileのRUN命令は、現在設定されているユーザーの権限で実行されます。さらにsudoを使うと、実際に使われる権限が分かりにくくなり、環境によって動作が変わる場合があります。
ビルド時の権限の流れが単純であれば、確認や保守がしやすくなります。別のユーザーが必要な場合はUSERで明示し、RUN内でのsudoは避けてください。
想定される影響
- ビルド段階の権限を把握し、確認することが難しくなります。
- sudoの設定やインストール状況の違いにより、ビルドが失敗する場合があります。
- 不要な管理者権限の使用が常態化する可能性があります。
対処方法
RUN内でsudoを使わず、必要なユーザーとして直接実行してください。- ユーザーを変える場合は、
USERで明示してください。 - イメージビルド中の不要な管理者権限の使用を減らしてください。
例
apkとリポジトリが構成されたAlpine系イメージで、rootとして実行するビルド手順の抜粋です。sudoを削除してもroot権限は減りません。アプリケーションの実行ユーザーは別途設定してください。
変更前
dockerfile
RUN sudo apk add --no-cache curl
変更後
dockerfile
RUN apk add --no-cache curl
説明:
- 変更前:
sudoを使うことで、ビルド時の権限の流れが不必要に複雑になります。 - 変更後: 現在のユーザー権限で直接実行し、ビルドの動作を予測しやすくします。