
我想用作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
(我想很少有人使用),所以我想教訓是在使用包管理器時要保持警惕,不要使用廣泛的nginx
或ansible
,而是使用更具體/明確的包。
問題
為什麼 Debian 成長如此之快,而安裝應用程式卻如此緩慢?這對於重型容器映像尤其重要,其中差異可能為 100 MB 與 1 GB。
從我在網路上讀到的內容來看,Alpine 比 Arch 更前沿,具有社群級軟體包,而 Debian 軟體包更值得信賴。對於企業用途,在安全關鍵的環境中,似乎有必要使用 Debian 軟體包,但也很難證明如此大的鏡像是合理的。 Alpine值得企業使用嗎? (理想情況下,所有二進位檔案都是可複製的,並由開發人員簽名,因此獨立建置是值得信賴的,但我知道我們離這一點還很遠?)。
有什麼辦法可以減少 Debian 的大小/建造時間嗎?一種選擇是手動安裝二進位檔案。apt-get update
在建置伺服器上使用 apt-proxy 可以加快速度嗎?
一種解釋可能是 alpine 鏡像有許多內建依賴項(busybox?),而debian
/debian-slim
需要添加它們?