如何在安装apt依赖项后创建尽可能小的Docker镜像

时间:2018-02-04 18:54:55

标签: docker debian

我使用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

1 个答案:

答案 0 :(得分:1)

要缩小图像的大小,您需要将RUN命令合并为一个。当您在一个图层中创建文件并在另一个图层中删除它们时,这些文件仍然存在于驱动器上并通过网络传送。当为容器组装文件系统的层时,它们的存在就被隐藏了。

Dockerfile最佳实践更详细地解释了这一点:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run

我还建议使用docker build --rm=false --no-cache .(暂时)构建,然后在每个创建的图像上查看docker diff的输出,以查看在每个图层中创建的文件。