説明
Alpine イメージで apk add を実行すると、設定によってはパッケージインデックスやキャッシュがイメージに残ります。実行時に不要なファイルは、イメージサイズと保存・転送コストを増やします。
直接的なセキュリティ脆弱性ではなく、イメージ管理と運用効率に関する事項です。最終イメージの外で管理する場合など、キャッシュを保持することが適切な構成もあります。
想定される影響
- 不要なキャッシュにより保存容量やデプロイ時間が増える場合があります。
- すべてのキャッシュを削除すると、繰り返すビルドのダウンロードコストが増える場合があります。
対処方法
- キャッシュが最終イメージに残る通常の apk add では --no-cache を使うか、必要なビルドキャッシュをイメージの外で管理してください。
- 最終イメージに残るファイルを確認してください。--no-cache はそのコマンドでローカルキャッシュを使わないためのオプションであり、前のレイヤーのキャッシュを削除するものではありません。
例
既存の Alpine 3.20 の例はキャッシュ使用だけを比較します。実際のビルドではサポート中のベースとパッケージリポジトリを使用してください。
変更前
dockerfile
FROM alpine:3.20
RUN apk add --update-cache python3
変更後
dockerfile
FROM alpine:3.20
RUN apk add --no-cache python3
補足:
- 変更前: --update-cache でインデックスを更新し、キャッシュがイメージに残る場合があります。
- 変更後: --no-cache でローカルキャッシュを使わずにインストールします。既存のキャッシュを削除する命令ではありません。