Docker 减少复制层大小

Docker 减少复制层大小,docker,Docker,目前我正在复制预下载的软件包,然后安装在docker映像上。复制层当前与正在复制的目录大小相同。目录稍后在另一层上被擦除。Dockerfile如下所示: COPY python-packages /tmp/python-packages RUN pip install -f /tmp/python-packages --no-index <pkg-name> \ && rm -rf /tmp/* COPY python包/tmp/python包 运行pip安

目前我正在复制预下载的软件包,然后安装在docker映像上。复制层当前与正在复制的目录大小相同。目录稍后在另一层上被擦除。Dockerfile如下所示:

COPY python-packages /tmp/python-packages
RUN pip install -f /tmp/python-packages --no-index <pkg-name> \
    && rm -rf /tmp/*
COPY python包/tmp/python包
运行pip安装-f/tmp/python包——无索引\
&&rm-rf/tmp/*

有没有一种方法可以在没有与被复制目录相同大小的图层的情况下复制文件?有没有办法减小复制层的大小?

不幸的是,此时您无法减小大小或消除层,
运行
复制
添加
将每次创建一个层

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

e、 g.
pip安装git+https://git.example.com/MyProject#egg=MyProject

更多信息:

这带来了不利的一面,即如果您的代码是私有的,您将不得不授予对
pip
的访问权,并且将在docker构建时引入对私有网络或internet上的网络连接的需求,具体取决于您的代码所在的位置

您还可以使用多阶段构建,在另一个docker映像中使用
pip
安装python模块,然后将工件复制到最终docker映像。我强烈不建议这样做,除非你别无选择并了解风险,因为你必须在安装过程中复制所有文件夹和/或文件
pip
touch,并可能创建它希望出现的其他文件夹和/或文件,并在最终docker映像中获得正确的权限,如果不深入了解
pip
内部,这将很难正确实现,而且从长远来看也很难维护,因为
pip
将来可能会更改其文件和文件夹位置和/或结构

关于多阶段构建的更多信息: