在我运行一个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程序不同。