
をベース コンテナ イメージとして使用したいと思います。しかし、 を使用してアプリケーションをインストールすると、debian:bookworm
コンテナ イメージが ( によると) 非常に急速に大きくなることがわかりました。dive
apt-get
免責事項: これらの「ベンチマーク」結果は、私のマシンで数回繰り返し実行して平均したものですが、問題を広く表していると思います。
単一のアプリの比較
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends nginx
FROM alpine:3.18.2
RUN apk add --no-cache nginx
その結果は次のようになります:
ベース | ビルド時間 | サイズ |
---|---|---|
高山 | 2.3秒 | 9.2MB |
デビアンスリム | 5.1秒 | 132MB |
debian-slim
は遅いため時間がかかりますapt-get update
が、単一のアプリケーションの場合、ベース イメージの違いは大きくなります。
複数のアプリを比較する
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends nginx curl wget git iputils-ping rsync unzip && \
apt-get clean && \
rm -rf /var/cache/apt/archives /var/lib/apt/lists/*
FROM alpine:3.18.2
RUN apk add --no-cache nginx curl wget git iputils-ping rsync unzip
ベース | ビルド時間 | サイズ |
---|---|---|
高山 | 3.2秒 | 23MB |
デビアンスリム | 9.0秒 | 201MB |
Alpine は 0.9 秒と 13.8 MB 増加しました。Debian は 3.9 秒と 69 MB 増加しました。
ファイルリスト
使用docker run --rm -it <tag> du -h > debian.txt
高山:https://pastebin.com/mHTHDFwW debian-slim:https://pastebin.com/wTpuYGDD
約50MBは関連しているようですperl
?
極端な例
多数のビルド ツール (Java、Go、NodeJS など) を含むイメージがあり、当然サイズは大きくなりますが、それでも 7.1 GB にもなるとは驚きです。しかし、これは debian/apt のせいではないかもしれません。実行するだけでpip3 install ansible
565 MB が追加され、そのうち 222 MB は (使用する人はほとんどいないと思いますが) 用です。したがって、パッケージ マネージャーを使用するときは注意が必要で、広範またはより具体的/明示的なパッケージはfortinet
使用しないことが教訓になると思います。nginx
ansible
質問
なぜ Debian はこれほど大きく成長し、アプリケーションのインストールがはるかに遅くなるのでしょうか? これは、違いが 100 MB と 1 GB になる可能性がある重いコンテナ イメージに特に当てはまります。
オンラインで読んだところによると、Alpine は Arch に匹敵する最先端技術で、コミュニティ グレードのパッケージを備えており、Debian パッケージの方が信頼性が高いそうです。企業での使用、セキュリティが重要な環境では、Debian パッケージを使用する必要があるようですが、このような大きなイメージを正当化することも困難です。Alpine は企業での使用に信頼できるのでしょうか? (理想的には、すべてのバイナリが再現可能で、開発者によって署名されているため、独立したビルドが信頼できるはずですが、まだそこまでには程遠いと理解しています)。
Debian のサイズやビルド時間を削減するために何かできることはありますか? 1 つのオプションは、バイナリを手動でインストールすることです。apt-get update
ビルド サーバーで apt-proxy を使用すると、より高速化できますか?
1 つの説明としては、alpine イメージには多くの組み込み依存関係 (busybox など) があり、debian
/ はdebian-slim
それらを追加する必要があるということが考えられます。