`debian-slim` コンテナ イメージが `alpine` を使用する場合よりもずっと大きいのはなぜですか?

`debian-slim` コンテナ イメージが `alpine` を使用する場合よりもずっと大きいのはなぜですか?

をベース コンテナ イメージとして使用したいと思います。しかし、 を使用してアプリケーションをインストールすると、debian:bookwormコンテナ イメージが ( によると) 非常に急速に大きくなることがわかりました。diveapt-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 ansible565 MB が追加され、そのうち 222 MB は (使用する人はほとんどいないと思いますが) 用です。したがって、パッケージ マネージャーを使用するときは注意が必要で、広範またはより具体的/明示的なパッケージはfortinet使用しないことが教訓になると思います。nginxansible

質問

なぜ Debian はこれほど大きく成長し、アプリケーションのインストールがはるかに遅くなるのでしょうか? これは、違いが 100 MB と 1 GB になる可能性がある重いコンテナ イメージに特に当てはまります。

オンラインで読んだところによると、Alpine は Arch に匹敵する最先端技術で、コミュニティ グレードのパッケージを備えており、Debian パッケージの方が信頼性が高いそうです。企業での使用、セキュリティが重要な環境では、Debian パッケージを使用する必要があるようですが、このような大きなイメージを正当化することも困難です。Alpine は企業での使用に信頼できるのでしょうか? (理想的には、すべてのバイナリが再現可能で、開発者によって署名されているため、独立したビルドが信頼できるはずですが、まだそこまでには程遠いと理解しています)。

Debian のサイズやビルド時間を削減するために何かできることはありますか? 1 つのオプションは、バイナリを手動でインストールすることです。apt-get updateビルド サーバーで apt-proxy を使用すると、より高速化できますか?

1 つの説明としては、alpine イメージには多くの組み込み依存関係 (busybox など) があり、debian/ はdebian-slimそれらを追加する必要があるということが考えられます。

関連情報