问题 Docker创建了巨大的图像大小


我拉基础ubuntu:最新图像(大小192.7 MB)并且只安装了Oracle java7(JDK)(tar.gz~53MB的大小)并提交了生成的图像。图像大小为903MB。

为什么图像尺寸会大幅增加?我们仍然需要添加其他组件(tom cat,vertx,mysql等)。图像尺寸将变得难以管理。

有关如何减小图像尺寸的任何提示?

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
gammay/baseimage    v0.1a               80324b762c5e        21 minutes ago      903.6 MB
ubuntu              latest              9bd07e480c5b        2 weeks ago         192.7 MB

11024
2017-12-22 14:51


起源



答案:


几点:

  • 这个Dockerfile 将构建一个非常小的Oracle JDK映像。还看了 随附博客文章
  • 您可能不需要JDK来运行容器,并且可以使用基于JRE的容器。您始终可以使用单独的编译器容器来创建jar以进入应用程序容器。
  • 如果可以,请考虑使用基于OpenJDK构建的官方Java映像,这些映像相当小。
  • 理想情况下,您应该将MySQL等单独的进程放入单独的容器中。

13
2017-12-22 19:40





Java7可能有大量的依赖项需要安装才能运行,而这些依赖项并未安装在基础Ubuntu映像上。安装java时也会安装所有这些,这可能解释了大图像的大小。


1
2017-12-22 15:04





有关如何减小图像尺寸的任何提示?

您可以尝试执行以下操作:

  • 你是从源代码构建java的吗?如果是这样,您是否可以禁用应用程序不需要的选项?是否有运行时不需要的开发包?你也许也可以摆脱它们。

  • 在自己的容器中运行mysql,并将您的Web应用程序容器连接到您的mysql容器,可能通过 容器链接。这样做的原因有几个,其中一个原因是为了更轻松地扩展应用程序组件。

  • 以一种tomcat容器和应用程序jar的方式构建tomcat实例。然后,您可以使用a来安装应用程序 数据量 到tomcat容器。与tomcat / java容器相比,您的应用程序映像应该相对较小。更新应用程序变得更容易,因为您不需要同时重建tomcat / java映像(除非您需要将其他功能烘焙到tomcat中)。


1
2017-12-22 15:30





您可以优化图像

http://www.centurylinklabs.com/optimizing-docker-images/

你的形象可能会减轻一些重量

https://github.com/jwilder/docker-squash

您还可以使用本文中的工具创建一个小图像

http://blog.xebia.com/2015/06/30/how-to-create-the-smallest-possible-docker-container-of-any-image/ 和工具strip-docker-image可用于

https://github.com/mvanholsteijn/strip-docker-image


1
2017-12-23 07:25