為什麼我的“debian-slim”容器鏡像比使用“alpine”時大得多?

為什麼我的“debian-slim”容器鏡像比使用“alpine”時大得多?

我想用作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
debian-slim 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
debian-slim 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

大約 50 MB 似乎與perl?

極端情況範例

我有一個包含許多建置工具(Java、Go、NodeJS...)的鏡像,這顯然會很重,但我仍然很驚訝它達到了 7.1 GB。但這可能不是 debian/apt 的錯。僅僅運行pip3 install ansible就會增加 565 MB,其中 222 MB 是用於fortinet(我想很少有人使用),所以我想教訓是在使用包管理器時要保持警惕,不要使用廣泛的nginxansible,而是使用更具體/明確的包。

問題

為什麼 Debian 成長如此之快,而安裝應用程式卻如此緩慢?這對於重型容器映像尤其重要,其中差異可能為 100 MB 與 1 GB。

從我在網路上讀到的內容來看,Alpine 比 Arch 更前沿,具有社群級軟體包,而 Debian 軟體包更值得信賴。對於企業用途,在安全關鍵的環境中,似乎有必要使用 Debian 軟體包,但也很難證明如此大的鏡像是合理的。 Alpine值得企業使用嗎? (理想情況下,所有二進位檔案都是可複製的,並由開發人員簽名,因此獨立建置是值得信賴的,但我知道我們離這一點還很遠?)。

有什麼辦法可以減少 Debian 的大小/建造時間嗎?一種選擇是手動安裝二進位檔案。apt-get update在建置伺服器上使用 apt-proxy 可以加快速度嗎?

一種解釋可能是 alpine 鏡像有許多內建依賴項(busybox?),而debian/debian-slim需要添加它們?

相關內容