减少复制图层大小

时间:2018-04-19 19:58:20

标签: docker

目前我正在复制预先下载的软件包,然后安装在docker镜像上。 COPY 图层当前与要复制的目录具有相同的大小。目录稍后将在另一层上删除。 Dockerfile如下所示:

COPY python-packages /tmp/python-packages
RUN pip install -f /tmp/python-packages --no-index <pkg-name> \
    && rm -rf /tmp/*

有没有办法复制文件而没有与正在复制的目录相同的图层?有什么方法可以减少COPY层的大小?

1 个答案:

答案 0 :(得分:0)

不幸的是,到目前为止,您无法缩小尺寸或消除图层,RUNCOPYADD每次都会创建一个图层。

您可以使用pip直接从版本控制

进行安装

e.g。 pip install git+https://git.example.com/MyProject#egg=MyProject

更多信息:https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

如果您的代码是私有的,并且将在您的专用网络或互联网上引入网络连接的需求,具体取决于代码的位置,在docker上,这将带来您必须访问pip的缺点建立时间。

您还可以使用多阶段构建并在另一个docker镜像中安装带有pip的python模块,然后将工件复制到最终的docker镜像。我强烈不建议这个,除非您别无选择并了解风险,因为您必须在安装过程中复制所有文件夹和/或文件pip触摸并创建其他一些预期存在并且在最终的docker图像中获得权限的其他人,如果没有在pip内部进行深度跳水并且从{{1}起很长时间内难以维持,这将很难实现。{{1可能会在将来更改其文件和文件夹位置和/或结构。

有关多阶段构建的更多信息:https://docs.docker.com/develop/develop-images/multistage-build/