我需要在 docker 上安装最新版本的 curl
当使用下面的 docker 大小是 ~140MB
FROM debian:10.7
RUN apt-get update && \
apt-get install --no-install-recommends -y curl wget ca-certificates
这里使用 curl 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
的构建要素,有没有办法删除这个额外的 {{ 1}} ?
答案 0 :(得分:1)
您应该在 RUN 指令中包含 rm -rf /var/lib/apt/lists/*
以删除 apt 索引文件,并且可能包含 apt-get clean
以删除任何其他剩余的包文件。
除此之外,您还可以尝试使用 slim 镜像版本,根据 Docker Hub debian:10.7-slim 几乎是一半大小(~24Mb vs ~48Mb)
最后,您可以从生成的图像对容器执行 du -h | sort -h
以找出剩余空间使用情况。
答案 1 :(得分:1)
事实上,您已经接近解决方案了。你错过的一个是删除 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缓存,if会更小:
$ docker images abc:3
REPOSITORY TAG IMAGE ID CREATED SIZE
abc 3 5530b0e9b44f 2 minutes ago 134MB
另一个解决方案可能使用multistage-build,您可以使用./configure --prefix=xxx
来设置默认安装位置,然后stage1
只是用来构建curl
,而stage2
将 xxx 文件夹从 stage1
复制到最终图像。
答案 2 :(得分:1)
按照 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