我需要在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