我们怎样才能改进改进 docker 图片大小

How can we improve improve docker image size

任何人都可以帮助我理解我们如何 Try to optimize the Dockerfile by removing all unnecessary cache/files to reduce the image size.Removing unnecessary binaries/permissions to improve container security

我的 docker 文件看起来像这样

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

好吧,我想实际上有一些方法可以做到这一点:

  • multi-stage 建造
# STAGE1
FROM alpine AS stage1
WORKDIR /bin
RUN wget https://link/of/some/binaries -O app1 \
    && chmod +x app1 
# Run additional commands if you want

# STAGE2
FROM alpine AS stage2
WORKDIR /usr/local/bin
RUN wget https://link/of/some/binaries -O app2 \
    && chmod +x app2 
# Run additional commands if you want

# FINAL STAGE (runtime)
FROM python:3.7-alpine as runtime
COPY --from=stage1  /bin/app1 /bin/app1
COPY --from=stage2 /usr/local/bin/app2 /bin/app2
...

这实际上将允许您仅获取在前面阶段下载的所需二进制文件。

If you are using apk add and you don't know where things are getting installed you can try to test on an alpine image by running which command

  • 删除缓存
... # Install some stuff...

# Remove Cache
RUN rm -rf /var/cache/apk/*