Dockerイメージのビルド時にパッケージのインストールに失敗する

微修正を行いながら何度も繰り返しDockerコンテナを作成していると、 aptyumなどでパッケージをインストールする部分で、404エラーが発生し、Dockerイメージのビルドに失敗する場合があります。 これは、Dockerがキャッシュを使用しているためです。 Dockerイメージのビルド時には、Dockerfileの各行の実行結果を保存しており、再度ビルドする際にはキャッシュとしてその結果を再利用します。 次のようにCACHEDという文字列が出力されている箇所では、キャッシュを利用しています。

$ docker compose up -d
...
=> CACHED [3/14] RUN apt update && apt upgrade -y              0.0s
...

そのため、apt updateなどのパッケージ情報を更新するコマンドの実行結果がキャッシュされていると、パッケージ情報が更新されません。 インストールされるパッケージを変更したとき、古いバージョンのパッケージをインストールしようとしてビルドに失敗します。 このような場合は、docker builddocker compose build--no-cacheオプションを付けることで、キャッシュを使用せずにビルドできます。 ビルドが終わったら、改めてコンテナを起動してください。

$ docker compose build --no-cache
$ docker compose up -d