Java docker映像能否使用来自主机的可执行文件?

Java docker映像能否使用来自主机的可执行文件?,java,docker,Java,Docker,我有几个Java服务,每个都打包成一个单独的jar文件。我计划打包为docker图像。我是否需要在每个映像上捆绑Java运行时,或者我可以依赖主机(运行映像的主机)已经有Java运行时这一事实吗?docker的想法是使您的设置可移植,因此如果您没有放入Java运行时,就无法保证它在目标系统上正常工作。我不相信docker可以访问主机可执行文件,除非有一个特殊的白名单设置,但以我的经验,它不能 您可以使用卷将Java运行时从主机装载到容器中,但这会降低容器的可移植性(Andrew Fox指出) 如

我有几个Java服务,每个都打包成一个单独的jar文件。我计划打包为docker图像。我是否需要在每个映像上捆绑Java运行时,或者我可以依赖主机(运行映像的主机)已经有Java运行时这一事实吗?

docker的想法是使您的设置可移植,因此如果您没有放入Java运行时,就无法保证它在目标系统上正常工作。我不相信docker可以访问主机可执行文件,除非有一个特殊的白名单设置,但以我的经验,它不能

您可以使用卷将Java运行时从主机装载到容器中,但这会降低容器的可移植性(Andrew Fox指出)

如果您为您的容器使用公共基本映像(如
java:8-jre
),则映像将在容器之间共享,这意味着磁盘上只有一个副本(而不是每个容器一个副本)


并不是说在这两种情况下,您仍将运行多个JVM,每个容器一个。

这取决于,依赖关系,某些版本中是否存在JVM,这与映像将在同一主机操作系统或同一Docker版本上运行的要求类似。。。就我的观点而言,无意冒犯…你能分享一些东西来支持吗?这种行为是Java特有的吗?谢谢只需查看CoW文件系统是如何工作的。我改写了我的答案,以便更清楚地表达我的意思。这本书读得很好,谢谢!简言之,它不是特定于Java的,可以很容易地实现相同的功能。。。CoW代表“写下就复制”。