如何减小 Docker 镜像大小

use*_*453 13 docker

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

小智 10

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

看看这篇文章中的“层”部分:http : //woudenberg.io/reducing-docker-image-size/

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

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


Wer*_*ght 5

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

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar
Run Code Online (Sandbox Code Playgroud)

你需要做的是:

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar
Run Code Online (Sandbox Code Playgroud)

不利的一面是,这意味着缓存会减少,就好像大型命令行中发生任何更改一样,Docker 必须重新运行整套命令。