ドッカー画像は最小限で、基本画像を実行するための絶対的な必要性が含まれています。 Debianベースイメージの場合、パッケージレポキャッシュがないことを意味します。したがって、apt-get update
を実行すると、すべてのリポジトリから初めてパッケージリポジトリキャッシュがダウンロードされます。それらがパッケージレポキャッシュを含んでいた場合、パッケージ状態が数百万回になり、すぐに古くなってしまい、後で更新を行うことで縮小されるベースイメージが大きくなります。
実際のdebian:最新のイメージは、先月のコミットによって比較的よく維持されます。 https://hub.docker.com/_/debian/
イメージのビルド時間を短縮するため、毎回イメージを削除しないことをお勧めします。代わりに新しいビルドとタグを実行し、新しいイメージがビルドされたらdocker image prune --force
を実行して、以前のビルドからタグなしイメージを削除します。これにより、ドッカーは以前のイメージビルドからキャッシュを再利用できます。
また、あまり頻繁に更新されず、すべてのアプリケーションの前提条件がある独自のベースイメージを作成することもできます。他のイメージと同様に構築し、FROM debian:latest
をFROM your_base_image
に変更します。
イメージビルドでlatest
を使用しないでください。代わりにFROM debian:9
のようにして、debianのメジャーバージョンのアップデートでビルドが中断されないようにしてください。
あなたはその行をキャッシュしないようにしていますか? – BMitch
毎回イメージを削除します。しかし、それは新鮮ではなく、最新のパッケージアップデートをすべて含んでいないのはなぜですか?私は 'debian:latest'と言っていましたが、数ヶ月です=( –
' apt-get update'はパッケージを更新しません;現在のパッケージリストをAPTリポジトリから取り出します。 "永遠に?" – jwodder