使用curl优化docker图像构建大小



我需要在docker上安装最新版本的curl

当使用以下docker时,其大小为~140MB

FROM debian:10.7
RUN apt-get update && 
apt-get install --no-install-recommends -y curl wget ca-certificates

此使用卷曲7.64

当使用以下时

FROM debian:10.7
RUN apt-get update && 
apt-get install --yes --no-install-recommends wget build-essential ca-certificates libcurl4 && 
wget https://curl.se/download/curl-7.73.0.tar.gz && 
tar -xvf curl-7.73.0.tar.gz && cd curl-7.74.0 && 
./configure && make && make install && 
apt-get purge -y --auto-remove build-essential && 

docker映像大小为240MB,我已经尝试删除将大小从440减小到240的构建程序,有办法删除这个额外的~100MB吗?

事实上,您已接近解决方案。您错过的是删除curl源代码包。

所以接下来应该让图像缩小:

FROM debian:10.7
RUN apt-get update && 
apt-get install --yes --no-install-recommends wget build-essential ca-certificates libcurl4 && 
wget https://curl.se/download/curl-7.73.0.tar.gz && 
tar -xvf curl-7.73.0.tar.gz && cd curl-7.73.0 && 
./configure && make && make install && 
apt-get purge -y --auto-remove build-essential && 
cd .. && rm -fr curl-7.73.0.tar.gz curl-7.73.0

无卷曲:

$ docker images abc:1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
abc                 1                   d742bfdf5fa6        25 seconds ago      148MB

用curl&源程序包删除:

$ docker images abc:2
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
abc                 2                   afe3d404852a        27 minutes ago      151MB

另外,如果你在Dockerfile中用rm -rf /var/lib/apt/lists/*删除apt缓存,如果会更小:

$ docker images abc:3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
abc                 3                   5530b0e9b44f        2 minutes ago       134MB

另一个解决方案可能使用多级构建,您可以使用./configure --prefix=xxx设置默认安装位置,然后stage1只用于构建curl,而stage2将xxx文件夹从stage1复制到最终映像。

您应该将rm -rf /var/lib/apt/lists/*包含在RUN指令中以删除apt索引文件,并可能包含apt-get clean以删除任何其他剩余的包文件。

除此之外,根据Docker Hub debian的说法,你也可以尝试使用slim图像版本:10.7-slim几乎是的一半大小(~24Mb vs ~48Mb(

最后,您可以在生成的映像中的容器上执行du -h | sort -h,以找出剩余空间的使用情况。

使用atline建议的多级构建:

FROM debian:10.7 AS builder
WORKDIR /app
RUN mkdir /app/usr2
RUN apt-get update && 
apt-get install --yes --no-install-recommends wget build-essential ca-certificates libcurl4 && 
wget https://curl.se/download/curl-7.73.0.tar.gz && 
tar -xvf curl-7.73.0.tar.gz && cd curl-7.73.0 && 
./configure --prefix=/app/usr2 && make install
FROM debian:10.7
RUN apt-get update && 
apt-get install --no-install-recommends -y wget ca-certificates &&
rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/usr2/. /usr

最终大小为129MB

最新更新