Docker:如何重启容器内的进程?

时间:2015-01-14 16:32:03

标签: docker

我有一组测试,我想在docker容器上运行。 在测试过程中,我正在更改测试数据,我需要重新启动JETTY。

最好的方法是什么?

我可以想象一些选择:

  1. 使用SSH - 但对于docker ssh不是最好的选择。

  2. Docker上的Python代理监听套接字 - 再暴露一个端口,连接并重新启动jetty。

  3. 也许有更好的想法?

    由于

3 个答案:

答案 0 :(得分:18)

听起来你尝试重新启动的进程是docker容器的主要进程(即你在Dockerfile中设置的进程,如果你有一个,当你运行' ps -ef&# 39;在容器内部,您会看到过程的PID设置为1)。如果是这种情况,则无法从容器内重新启动它。你应该只重启容器本身:

docker restart <container_id>

答案 1 :(得分:3)

输入容器并重新启动。

手动方式:

docker exec -it <containeridorname> /bin/bash

或自动化方式:

docker exec -it <containeridorname> /restartjettycommand.sh

答案 2 :(得分:0)

您需要使用entrypoint shell script 您将需要构建docker文件,以便可以将文件复制到容器中。

您的entrypoint.sh或称其为runjettytests.sh

其伪代码如下:

#!/bin/sh
java -jar start.jar
$runTests
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
cp dataset2 data/
java -jar start.jar
$runTests2
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
exit(0)

显然,您的用例可能有所不同,但这是一个粗略的主意

相关问题