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

Docker: how to restart process inside of container?

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

最好的方法是什么?

我可以想象一些选择:

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

  2. Python docker 上的代理监听套接字 - 再公开一个端口,连接并重启码头。

也许有更好的主意?

谢谢

进入容器并重启。

手动方式:

docker exec -it <containeridorname> /bin/bash

或自动方式:

docker exec -it <containeridorname> /restartjettycommand.sh

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

docker restart <container_id>

你需要使用 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)

很明显,您的用例可能会有所不同,但这是一个粗略的想法