不同 python 版本的 docker 镜像的文件大小加倍作为基础镜像

Filesize of dockerimage doubles with different python version as baseimage

我用一些 apt 和 pip 包为 jupyterlab 构建了 dockerimages。

docker image ls:
jupyterlab    3.7.12     9d4cc5c15853   27 minutes ago   2.3GB
jupyterlab    3.9.9      1962a1eb6bff   25 hours ago     1.12GB

图片文件大小相差很大,我只拍了另一个python版本。

这里是用于比较的 dockerfiles: 此 dockerfile 是使用 python 3.7.12 作为基础映像构建的:

FROM python:3.7.12-slim-buster

WORKDIR /

COPY wheels/scipy-1.7.3-cp37-cp37m-linux_armv7l.whl ./wheels/scipy-1.7.3-cp37-cp37m-linux_armv7l.whl

## INSTALL WITH APK
RUN apt-get update && apt-get install -y \
    g++ \
    gcc \
    python3-dev \ 
    libjpeg-dev \
    zlib1g-dev \
    make \
    wget \
    libatlas-base-dev \
    libffi-dev 

## INSTALL WITH PIP
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir pillow && \
    pip install --no-cache-dir matplotlib && \
    pip install --no-cache-dir pandas && \
    pip install --no-cache-dir setuptools && \
    pip install --no-cache-dir cffi && \
    pip install --no-cache-dir GLIBC && \
    pip install --no-cache-dir numpy && \
    pip install --no-cache-dir /wheels/scipy-1.7.3-cp37-cp37m-linux_armv7l.whl && \
    pip install --no-cache-dir jupyterlab
    # pip install --no-cache-dir /wheels/numpy-1.21.4-cp39-cp39-linux_armv7l.whl && \
    # pip install --no-cache-dir /wheels/scipy-1.7.2-cp39-cp39-linux_armv7l.whl && \
    # pip install --no-cache-dir /wheels/jupyterlab-4.0.0a15-py3-none-any.whl 
    ...    

这是以 python 3.9.9 作为基础图像的那个:

FROM python:3.9.9-slim-buster

WORKDIR /

COPY wheels ./wheels

## INSTALL WITH APK
RUN apt-get update && apt-get install -y \
    g++ \
    gcc \
    python3-dev \ 
    libjpeg-dev \
    zlib1g-dev \
    make \
    wget \
    libatlas-base-dev \
    libffi-dev 

## INSTALL WITH PIP
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir pillow && \
    pip install --no-cache-dir matplotlib && \
    pip install --no-cache-dir pandas && \
    pip install --no-cache-dir setuptools && \
    pip install --no-cache-dir cffi && \
    pip install --no-cache-dir GLIBC && \
    pip install --no-cache-dir /wheels/numpy-1.21.4-cp39-cp39-linux_armv7l.whl && \
    pip install --no-cache-dir /wheels/scipy-1.7.2-cp39-cp39-linux_armv7l.whl && \
    pip install --no-cache-dir /wheels/jupyterlab-4.0.0a15-py3-none-any.whl 
    ...

在这两种情况下,wheels 文件夹和一些其他文件都被删除了。 为什么文件大小差别这么大???

我通过删除“apt-get python3-dev”解决了这个问题,它是版本 3.7.2。我的基础镜像是 python 3.7.12 所以可能有冲突,我无法解释。

图片大小:

#docker image ls

REPOSITORY      TAG            IMAGE ID        CREATED             SIZE
jupyterlab      3.7.12_nodev   6112bcaff54d    17 hours ago        1.18GB
jupyterlab      3.9.9          1962a1eb6bff    2 days ago          1.12GB