安装RPM(~500MB)会将docker映像大小增加1 GB以上

安装RPM(~500MB)会将docker映像大小增加1 GB以上,docker,rpm,yum,Docker,Rpm,Yum,我正在将RPM添加到docker映像中,并在映像构建期间安装它们。 我有一种感觉,我的图像中有两次RPM。在我添加它们的地方和RPM安装它们的地方。 总共大约有500 MB RPM(是的,它们很大),最终docker映像从700 MB基本映像增长到2.1 GB最终映像 问题:我如何避免将它们添加到图像中 我的第一个想法是将它们放入本地的yum存储库,然后使用yum从存储库安装。这将删除添加到docker映像的内容 还有其他可能性吗?为什么我不能堆一个外部服务器卷并从那里安装文件?您在/var/c

我正在将RPM添加到docker映像中,并在映像构建期间安装它们。 我有一种感觉,我的图像中有两次RPM。在我添加它们的地方和RPM安装它们的地方。 总共大约有500 MB RPM(是的,它们很大),最终docker映像从700 MB基本映像增长到2.1 GB最终映像

问题:我如何避免将它们添加到图像中

我的第一个想法是将它们放入本地的yum存储库,然后使用yum从存储库安装。这将删除添加到docker映像的内容


还有其他可能性吗?为什么我不能堆一个外部服务器卷并从那里安装文件?

您在
/var/cache/dnf
中有它们

你可以尝试:

RUN   dnf -y install httpd
RUN   dnf clean all
但是你会发现它不会使图像变小。这是因为docker将在每个运行部分之后创建图像层。因此,你必须做到:

RUN   dnf -y install httpd && \
      dnf clean all

这将在这两个命令之后创建图像层,并且图像层应该更小。

您在
/var/cache/dnf
中有它们

你可以尝试:

RUN   dnf -y install httpd
RUN   dnf clean all
但是你会发现它不会使图像变小。这是因为docker将在每个运行部分之后创建图像层。因此,你必须做到:

RUN   dnf -y install httpd && \
      dnf clean all

这将在两个命令之后创建图像层,并且图像层应明显更小。

明白。但我的RPM不在任何yum repo中。我必须创建自己的本地repo服务器才能使用yum吗?或者有更简单的方法吗?那么“我添加了它们”是什么意思?您使用“复制”添加它们?那么这是同一个问题。添加后,docker拍摄图层快照(其中包含rpm)。然后安装rpm。Docker将拍摄该层的快照。您必须一步完成所有操作(通过
dnf-y安装http://myserver/foo.rpm
或者您必须挤压层。请参阅。我的RPM不在任何yum repo中。我必须创建自己的本地repo服务器来使用yum吗?或者有更简单的方法吗?那么“我添加了它们”是什么意思?您使用COPY添加它们?那么这是相同的问题。添加后,docker将拍摄层的快照(其中包含rpm)。然后您安装rpm。docker将拍摄层的快照。您必须一步完成所有操作(通过
dnf-y安装)http://myserver/foo.rpm
或者您必须挤压层。请参阅