我有几个Java服务,每个服务都打包成单独的jar文件。我计划将它们打包为docker镜像。我是否需要在每个镜像中捆绑Java运行时环境,还是可以依赖于运行镜像的主机已经有了Java运行时环境?
您需要在每个镜像中捆绑Java运行时环境,因为Docker容器是独立的,不受主机环境的影响。如果您没有在镜像中捆绑Java运行时环境,则可能会导致Java应用程序无法正常运行。
java:8-jre
这样的通用基础映像为容器提供支持,则该映像将在容器之间共享,这意味着磁盘上只有一个副本(而非每个容器一个副本)。Docker的理念是使您的设置具有可移植性,因此如果您不安装Java运行时环境,则无法保证它在目标系统上能够正常工作。我认为除非有特殊的白名单设置,否则Docker无法访问主机可执行文件,但在我的经验中,它不能。