RUNでのsudo使用

RUNの実行ユーザーを明確にし、不要なsudoを削除してください。

説明

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を使うことで、ビルド時の権限の流れが不必要に複雑になります。
  • 変更後: 現在のユーザー権限で直接実行し、ビルドの動作を予測しやすくします。

参考資料