如何减少Docker映像大小


12

我有运行GlassFish的容器。当我尝试提交映像时,它变为14GB。后来,我删除/tmp/了10GB的容器并尝试提交映像,但该映像仍然是14GB。似乎从容器中删除文件并没有反映在图像大小中。如何解决此问题?


1
没有一点有关您的设置的信息,没有人能真正提出任何建议。什么是Dockerfile?添加到Docker构建上下文中的文件树是什么?官方glassfishDocker映像约为1 GB。尽管对于Docker映像而言确实非常大,但它仍然比您看上去要构建的要小得多。
安迪·辛

请参阅此SO问题以获取指导。另外,此Google搜索包含许多相关文章。
Misha Brukman

Answers:


9

您可能面临的问题是,在提交中删除文件不会改变文件在先前映像中的事实,因此先前映像仍为14G。

看看本文的“层”部分:http : //woudenberg.io/reducing-docker-image-size/

要解决该问题,您需要删除生成它们的原始提交中/ tmp /下的内容,因此,由于该提交而创建的映像不包括这些内容。使用dockerfiles时很容易,但是不确定是否使用提交创建映像时。

您可能能够做的另一件事是通过导出/导入图像来压缩图层。


4

扩展@Juan Antonio的答案,Dockerfile这样做不会节省空间:

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar

您需要做的是:

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar

从不利的方面看,这意味着较少的缓存,因为在大型命令行中发生了任何更改,Docker将不得不重新运行整个命令集。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.