Dockerfile の自動化における apt 使用の確認

自動化するコマンドには apt-get と apt-cache を使ってください。

説明

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 でインデックスを更新してインストールします。パッケージやネットワークのエラーをすべて防ぐ設定ではありません。

参考資料