如下图,我已经创建了docker容器,并进入了容器中。之后我想通过java -jar 命令在后台执行jar包代码,我尝试过在java -jar后面加上&,但是退出终端后程序就结束了。我希望能在关闭此终端后不会使正在运行的java代码终止,我应该怎么做?
docker run 加个-d 参数,docker会将容器放到后台去运行。
我run容器的时候就是用的 docker run -itd命令,容器一直没有退出过。就是在用docker exec -it 命令进入容器命令行执行在后台跑jar包之后,用exit退出来后,刚刚跑的jar包进程就退出了。我想让jar包一直执行。
@cybm: 那这个问题,应该从java的角度入手,而不是容器。比如java有么有守护进程之类的操作。
@坤坤: 我用的nohup java -jar &,执行完之后用jobs可以看到代码在后台执行,但是退出后重新exec -it 容器ID/bin/bash 后进去查看jobs又没有了。难道要自己写一个守护进程吗?
我懂了,新建终端好像不能通过jobs来查看之前的进程。可以通过netstat来看端口占用。我测试了一下,我的代码确实现在一直在后台跑着。
@cybm: 你后面查看端口的思路就是对的,或者在看当前的进程。容器没有退出,那就说明docker 运行良好。