Docker创建的镜像大小巨大

11
我拉取了基于 Ubuntu 最新版本的镜像(大小为 192.7 MB),仅安装了 Oracle Java7(JDK)(tar.gz 大小约为 53MB),然后提交了生成的镜像。生成的镜像大小为 903MB。
为什么镜像的大小会增加这么多?我们仍需要添加其他组件(如 Tomcat、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
4个回答

15

几点需要注意:

  • 这个Dockerfile将构建一个非常精简的Oracle JDK映像。还可以阅读附带的博客文章
  • 您可能不需要在容器中运行JDK,而是可以使用基于JRE的容器。您始终可以使用单独的编译器容器创建jar文件,然后放入应用程序容器中。
  • 如果可以的话,请考虑使用基于OpenJDK构建的官方Java映像,其大小比较小。
  • 理想情况下,应该将MySQL等单独的进程放入单独的容器中。

很遗憾,该链接的博客文章是私有的 :/ - findusl

1

Java7可能有很多需要安装的依赖项才能运行,这些依赖项在您的基本Ubuntu映像上未安装。当您安装Java时,所有这些依赖项也会被安装,这可能解释了大型映像大小。


1

有什么方法可以缩小图片尺寸吗?

您可以尝试以下操作:

  • 您是否正在从源代码构建Java?如果是,是否有一些不需要的选项可以禁用以适应您的应用程序?运行时是否存在不需要的开发包?您可能也可以摆脱它们。

  • 在自己的容器中运行mysql,并通过容器链接将Web应用程序容器连接到mysql容器。这样做的几个原因之一是更容易扩展应用程序组件。

  • 以这种方式构建您的tomcat实例:使用tomcat容器和应用程序jar,然后使用数据卷将应用程序挂载到tomcat容器。与tomcat / java容器相比,您的应用程序镜像应该相对较小。更新应用程序变得更加容易,因为您不需要同时重建tomcat / java镜像(除非您需要将其他功能嵌入tomcat中)。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接