在我运行一个java程序后,Docker停止响应

我在Ubuntu上有一个Docker实例:14.04。 我已经安装了Java和一切。 现在我正在容器中运行一个简单的“HelloWorld.java”代码。

我在用

docker run -it --cpuset-mems="0" mt-docking-engine /bin/bash 

进入容器内。 有一次,我在里面可以做很多事情。 但一旦我运行“HelloWorld.java”程序使用

 javac HelloWorld.java java -cp . HelloWorld 

它给了我“你好,世界!” 输出(迄今为止很好)。 但是然后它卡住了。 正如我所做的那样,我甚至无法正常从docker内部退出(通过CTRL + C)。 没有任何工作

为什么发生这种情况? 我究竟做错了什么?

你甚至不需要System.exit(0) 。 关于您的图像,设置或编译器的内容有所不同:

我跑这个:

 public class HelloWorld { public static void main(String[] args) { // Prints "Hello, World" to the terminal window. System.out.println("Hello, World"); } } 

然后:

 $ docker run -ti --cpuset-mems="0" centos:7 /bin/bash [root@eddd649c8b96 ~]# javac HelloWorld.java [root@eddd649c8b96 ~]# java -cp . HelloWorld Hello, World [root@eddd649c8b96 ~]# exit 

正确的答案是:我不得不添加System.exit(0); 在没有提到的代码的末尾。 这就是Java应用程序如何在Docker容器内退出,与其他不需要退出代码的cpp程序不同。