Docker镜像可以使用主机的可执行文件吗?

我有几个Java服务,每个都打包成一个单独的jar文件。 我打算把它们打包成docker图像。 我是否需要在每个映像上绑定Java运行时,还是可以依赖于运行映像的主机已经拥有Java运行时?

你可以使用一个卷来将Java运行时从主机挂载到容器中,但这会使得容器的可移植性降低(正如Andrew Fox所指出的那样)。

如果您使用的是像java:8-jre这样的通用基本映像,那么映像将在容器之间共享,这意味着只有一个副本(每个容器不是一个副本)。

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