説明
apt は対話的な端末操作を想定しており、バージョン間のインターフェース互換性を保証しません。Dockerfile の自動処理には、より安定したインターフェースを持つ apt-get と apt-cache が適しています。
apt が必ず失敗するという意味ではありません。コマンドを変えるだけでパッケージバージョンやビルド結果が固定されるわけでもありません。
想定される影響
- APT のバージョン変更で、スクリプトが想定する出力や動作が変わる場合があります。
- 予期しない違いにより、イメージのビルドや保守が難しくなる場合があります。
対処方法
- インストールには apt-get、パッケージ情報の参照には apt-cache を使ってください。サブコマンドやオプションは各ツールの文書に合わせて変更してください。
- apt-get update とインストールを同じ RUN にまとめ、自動確認とキャッシュ削除を構成し、実際のビルドとバージョン管理も確認してください。
例
自動化用インターフェースを比較します。変更後はインデックス更新も行います。キャッシュ削除とバージョン固定は省略しています。
変更前
dockerfile
FROM ubuntu:24.04
RUN apt install -y curl
変更後
dockerfile
FROM ubuntu:24.04
RUN apt-get update \
&& apt-get install -y curl
補足:
- 変更前: 対話操作を重視した apt を使い、インデックス更新も省略しています。
- 変更後: apt-get でインデックスを更新してインストールします。パッケージやネットワークのエラーをすべて防ぐ設定ではありません。