我使用 debian 创建了一个 Docker 镜像作为父图像。在我的 Dockerfile 中,我使用 apt 和 pip 安装了一些依赖项。
现在,我想摆脱运行我的应用程序并非完全必需的所有内容,当然,这需要安装依赖项。
目前,在安装依赖项后,我的 Dockerfile 中有以下几行。
RUN rm -rf /var/lib/apt/lists/* \
&& rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
&& apt-get clean
我还使用 --no-install-recommends
选项安装了依赖项。
我还可以做些什么来减少 Docker 镜像的占用空间?
PS:以防万一,这就是我安装依赖项的方式:
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
sudo systemd \
build-essential libffi-dev libssl-dev \
python-pip python-dev python-setuptools python-wheel
最佳答案
要减小图像的大小,您需要将 RUN
命令合并为一个。当您在一层中创建文件并在另一层中删除它们时,文件仍然存在于驱动器上并通过网络传送。当为容器组装文件系统的各层时,它们的存在就被隐藏了。
Dockerfile 最佳实践对此进行了更详细的解释:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
我还建议使用docker build --rm=false --no-cache 进行构建。
(暂时),然后检查每个docker diff
的输出创建的图像的 View 以查看每层中创建了哪些文件。
关于docker - 安装 apt 依赖项后如何创建尽可能最小的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611838/