我使用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
答案 0 :(得分:1)
要缩小图像的大小,您需要将RUN
命令合并为一个。当您在一个图层中创建文件并在另一个图层中删除它们时,这些文件仍然存在于驱动器上并通过网络传送。当为容器组装文件系统的层时,它们的存在就被隐藏了。
Dockerfile最佳实践更详细地解释了这一点:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
我还建议使用docker build --rm=false --no-cache .
(暂时)构建,然后在每个创建的图像上查看docker diff
的输出,以查看在每个图层中创建的文件。