ベースイメージのバージョンが未指定

ベースイメージのバージョンを指定しないと、Docker のビルド結果が変わる可能性があります。

説明

FROM alpine のようにタグやダイジェストを指定しない参照では、デフォルトで latest タグを使います。そのタグが別のイメージを指すようになると、同じ Dockerfile の再ビルドでも結果が変わる可能性があります。

ベースイメージはアプリケーションの実行環境を決めます。明示的なタグを使い、可能ならダイジェストも指定してビルドの再現性を確保してください。

想定される影響

  • ビルドごとに OS やライブラリのバージョンが変わる場合があります。
  • 予期しないイメージ変更でテストと本番の結果が異なる可能性があります。
  • 脆弱性の確認やデプロイの追跡が難しくなります。

対処方法

  • FROM alpine:3.22 のように明確なイメージタグを指定してください。
  • タグは付け替えられるため、同じイメージ内容を選ぶにはダイジェストを使ってください。固定したイメージもセキュリティ更新を確認して更新してください。
  • マルチステージビルドで使う外部イメージにもバージョンやダイジェストを指定してください。

例

変更前

dockerfile
FROM alpine

変更後

dockerfile
FROM alpine:3.22

説明:

  • 変更前: タグのない参照は、リポジトリの変更によって別のイメージを取得する可能性があります。
  • 変更後: バージョンタグで意図したリリース系列を指定します。タグ自体は変更可能なため、同一の内容が必要なら確認済みのダイジェストを追加してください。

参考資料