Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用docker构建的库&;主机中的bin_Java_Docker_Openj9 - Fatal编程技术网

Java 如何使用docker构建的库&;主机中的bin

Java 如何使用docker构建的库&;主机中的bin,java,docker,openj9,Java,Docker,Openj9,我的问题是如何在主机中使用docker容器构建的软件和库。docker附带的库可能依赖于其他工具/库编译。当我尝试一些开源项目时,比如openj9,我就遇到了这个问题 例如,我在docker容器中构建了一个openJ9虚拟机,一个类似于HotSpot JVM的Java虚拟机,如下()。 这个过程还可以,但下一个问题是如何配置容器构建的jvm,它位于主机上的eclipse中的容器内部的~/openj9-openjdk-jdk8/build/linux-x86\u 64-normal-server-

我的问题是如何在主机中使用docker容器构建的软件和库。docker附带的库可能依赖于其他工具/库编译。当我尝试一些开源项目时,比如openj9,我就遇到了这个问题

例如,我在docker容器中构建了一个openJ9虚拟机,一个类似于HotSpot JVM的Java虚拟机,如下()。 这个过程还可以,但下一个问题是如何配置容器构建的jvm,它位于主机上的eclipse中的容器内部的
~/openj9-openjdk-jdk8/build/linux-x86\u 64-normal-server-release/

在使用docker时,我可能使用了错误的方法,因为容器构建的jvm的容器环境可能不同于主机环境,所以我觉得可能存在潜在的冲突


那么,有人能解释一下在主机上为我的eclipse使用容器构建jvm的正确方法吗?谢谢

这里有两种不同的使用模式。我不知道你问的是哪一个。也许你在问这两个问题

如果您希望在构建JVM的容器中运行JVM,那么您的情况与在远程服务器上运行JVM并希望将本地Eclipse连接到它的情况相同。我使用IntelliJ,它有许多方法可以让您部署和调试远程Java程序或库。无论在Eclipse中实现这一点的正确方法是什么,都同样适用于在本地Docker容器中运行的Java程序

如果您正在谈论将您在容器中构建的JVM包取出,从容器中取出,并在本地工作站上运行,那么这将与在一台机器上构建可执行文件或库以在另一台机器上使用的任何其他情况一样有效。如果您在两种环境中运行相同的基本操作系统,比如说容器内外的Ubuntu版本都相似,那么您将有最好的机会做到这一点而不会出现问题。您将无法在Ubuntu中构建一个运行在Docker容器中的JVM二进制文件,然后将其取出并在托管Docker的Windows工作站上运行


事实上…我知道还有第三种选择。如果您想在Docker容器中运行Java程序,可能是Eclipse对此有特定的支持……在与Eclipse运行在同一工作站上的Docker主机中部署并运行Java程序。它将做与远程服务器基本相同的事情,但它可以很好地简化此用例,因为您的目标是本地Docker容器。

实际上,对于我的问题,它是第二个,而主机环境和容器环境略有不同。第一,我需要首先将代码部署到容器中;那么,docker的正常模式是什么?将我的代码添加到容器中,并使用docker构建的工具启动它,或者将其拉出并在具有相同环境的主机上运行?谢谢你到底想达到什么目的?我想我不明白。有趣的是,您希望/需要构建自己的JVM。有必要吗?你真的需要那个JVM,而且你只能以源代码的形式得到它?如果这是真的,那么如果您可以让JVM在您的工作站或Docker中运行,您会选择哪一种?最简单的事情就是把所有东西都放在一个地方或另一个地方。否则,您只是使用容器来构建JVM,我想知道为什么您不能在本地机器上构建JVM。有一些用于管理容器的工具,但它们并没有真正为您提供任何在命令行上做不到的功能。他们只是给你一个更好的GUI。调试支持似乎是通过我给你的第一个模型实现的。您在容器中运行Java应用程序,并在端口上设置远程调试,将该端口映射到主机上的端口,然后创建一个Eclipse远程调试会话,该会话连接到“localhost:”其中是您将Java应用程序的调试器端口映射到的主机端口….我自己在docker内部构建了jvm,由于我做了一些更改,并想验证我的更改是否对我的项目有影响,该项目是在eclispe in host machine中编写的。最好在主机上构建java程序,然后将安装java程序添加到Dockerfile中,以便它复制应用程序,然后运行它。您可以在构建JVM的同一Dockerfile上执行此操作,就好像您只需添加到该Dockerfile中一样,Docker足够聪明,不会重做它已经完成的构建JVM的部分。