我尝试在Java程序内部运行一个Docker容器,但是该Docker容器无法运行。
当我在终端中使用进程构建器执行此命令时,容器启动并且一切正常。
我在Java程序中打印了工作目录,并且这是启动Docker容器的正确目录。
我还将命令更改为:
String[] dockerCommand = new String[] {"java", "-cp", "target/MavenAsteroidsServer-1.0-SNAPSHOT.jar", "asteroidsserver.AsteroidsServer", "1600", "1600", "127.0.1.1", "8851", "8901"};
这个方法行得通,所以在不使用docker容器的情况下运行程序也可以。
以下是我在java程序中用来启动docker容器的代码:
String[] dockerCommand = new String[] {"docker", "run", "-it", "--rm", "--net=\"host\"", "-p", "8901:8901", "-v", "\"$PWD\":/app", "-w", "/app", "demo/maven:3.3-jdk-8", "java", "-cp", "target/MavenAsteroidsServer-1.0-SNAPSHOT.jar", "asteroidsserver.AsteroidsServer", "1600", "1600", "127.0.1.1", "8851", "8901"};
ProcessBuilder probuilder = new ProcessBuilder(dockerCommand);
Process process;
try {
process = probuilder.start();
int status = process.waitFor();
} catch (InterruptedException e) {
} catch (IOException ex) {
}
我希望容器能够运行,但是没有任何反应。另外,在尝试使用try和catch块捕获错误信息时,我没有得到任何错误消息(代码中未显示)。