Docker在其中运行java程序后停止响应

时间:2016-04-20 16:00:50

标签: java docker

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

我正在使用

<div class="col-md-2">
    <form action="action.php" method="get" role="search" style="margin-top:20px">
        <div class="input-group">
            <input style="margin-top:0px" type="text" class="form-control" placeholder="Suchen..." name="srch" id="srch">
            <input name="id" value="<?php echo $id; ?>" type="hidden">
                <div class="input-group-btn">
                <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
            </div>
        </div>
    </form>
</div>

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

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

它给了我&#34;你好,世界!&#34;输出(到目前为止一直很好)。但后来它被卡住了。我甚至不能像往常一样从Docker内部退出(通过CTRL + C)。什么都行不通。

为什么会这样?我做错了什么?

2 个答案:

答案 0 :(得分:1)

你甚至不需要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

答案 1 :(得分:0)

正确的答案是:我必须在代码的末尾添加System.exit(0);,这是在任何地方提到的。这就是Java应用程序在Docker容器内部退出的方式,而不像其他不需要退出代码的c cpp程序。